js实现常用排序算法
作者:_eve
这篇文章主要为大家详细介绍了js实现常用排序算法的代码,感兴趣的小伙伴们可以参考一下
本文为大家分享了js实现常用排序算法,具体内容如下
1.冒泡排序
var bubbleSort = function (arr) { var flag = true; var len = arr.length; for (var i = 0; i < len - 1; i++) { flag = true; for (var j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j + 1]) { var temp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = temp; flag = false; } } if (flag) { break; } } };
2.选择排序
var selectSort = function (arr) { var min; for (var i = 0; i < arr.length-1; i++) { min = i; for (var j = i + 1; j < arr.length; j++) { if (arr[min] > arr[j]) { min = j; } } if (i != min) { swap(arr, i, min); } } }; function swap(arr, index1, index2) { var temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; };
3.插入排序
var insertSort = function (arr) { var len = arr.length, key; for (var i = 1; i < len; i++) { var j = i; key = arr[j]; while (--j > -1) { if (arr[j] > key) { arr[j + 1] = arr[j]; } else { break; } } arr[j + 1] = key; } };
4.希尔排序
var shellSort = function (arr) { var gaps = [5, 3, 1]; for (var g = 0; g < gaps.length; ++g) { for (var i = gaps[g]; i < arr.length; ++i) { var temp = arr[i]; for (var j = i; j >= gaps[g] && arr[j - gaps[g]] > temp; j -= gaps[g]) { arr[j] = arr[j - gaps[g]]; } arr[j] = temp; } } };
5.归并排序
function mergeSort(arr) { if (arr.length < 2) { return; } var step = 1; var left, right; while (step < arr.length) { left = 0; right = step; while (right + step <= arr.length) { mergeArrays(arr, left, left + step, right, right + step); left = right + step; right = left + step; } if (right < arr.length) { mergeArrays(arr, left, left + step, right, arr.length); } step *= 2; } } function mergeArrays(arr, startLeft, stopLeft, startRight, stopRight) { var rightArr = new Array(stopRight - startRight + 1); var leftArr = new Array(stopLeft - startLeft + 1); k = startRight; for (var i = 0; i < (rightArr.length - 1); ++i) { rightArr[i] = arr[k]; ++k; } k = startLeft; for (var i = 0; i < (leftArr.length - 1); ++i) { leftArr[i] = arr[k]; ++k; } rightArr[rightArr.length - 1] = Infinity; // 哨兵值 leftArr[leftArr.length - 1] = Infinity; // 哨兵值 var m = 0; var n = 0; for (var k = startLeft; k < stopRight; ++k) { if (leftArr[m] <= rightArr[n]) { arr[k] = leftArr[m]; m++; } else { arr[k] = rightArr[n]; n++; } } }
6.快速排序
var quickSort = function(arr, left, right) { var i, j, t, pivot; if (left >= right) { return; } pivot = arr[left]; i = left; j = right; while (i != j) { while (arr[j] >= pivot && i < j) { j--; } while (arr[i] <= pivot && i < j) { i++; } if (i < j) { t = arr[i]; arr[i] = arr[j]; arr[j] = t; } } arr[left] = arr[j]; arr[j] = pivot; quickSort(arr, left, i - 1); quickSort(arr, i + 1, right); }
总结:算法效率比较:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- 图文详解Heap Sort堆排序算法及JavaScript的代码实现
- Javascript实现快速排序(Quicksort)的算法详解
- JavaScript算法系列之快速排序(Quicksort)算法实例详解
- JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
- js交换排序 冒泡排序算法(Javascript版)
- 几种经典排序算法的JS实现方法
- Javascript中的常见排序算法
- Javascript排序算法之合并排序(归并排序)的2个例子
- JavaScript中几种常见排序算法小结
- JavaScript实现经典排序算法之选择排序
- JS实现的计数排序与基数排序算法示例
- JS中的算法与数据结构之常见排序(Sort)算法详解