https://github.com/damonare/Sorts 这位大兄弟♂总结的很好,快去看看吧!
冒泡排序(两两比较)
1 | function bubleSort(arr) { |
选择排序(遍历自身以外的元素,最小的元素和自己调换位置)
1 | // 推荐 |
插入排序(将元素插入到已排序好的数组中)
1 | function insertSort(arr) { |
快速排序
- 选择基准值(base),原数组长度减一(基准值),使用 splice
- 循环原数组,小的放左边(left数组),大的放右边(right数组);
- concat(left, base, right)
- 递归继续排序 left 与 right
1 | // let mid = arr[arr.length >>> 1] |
希尔排序(不定步数的插入排序,插入排序)
插冒归基稳定,快选堆希不稳定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 function shellSort(arr){
var nLength = arr.length;
if (nLength < 2) {
return arr;
}
for (var step = nLength >> 1; step > 0; step >>= 1) {
for (var i = 0; i < step; ++i) {
for (var j = i + step; j < nLength; j += step) {
var k = j,
value = arr[j];
while (k >= step && arr[k - step] > value) {
arr[k] = arr[k - step];
k -= step;
}
arr[k] = value;
}
}
}
return arr;
}