# 数据结构和算法
10种排序算法
# 1. 快速排序
function quickerSort(arr) {
if(arr.length == 0) {
return [];
}
var left = [];
var right = [];
var pivot = arr[0];
for(var i = 1; i < arr.length; i++) {
if(arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return [...quickerSort(left), pivot, ...quickerSort(right) ];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 2. 计数排序
function countingSort(iArr, max) {
var n = iArr.length;
var oArr = [];
// 创建长度max的数组,填充0
var C = [];
for(var i = 0; i <= max; i++){
C[i] = 0;
}
// 遍历输入数组,填充C
for(var j = 0; j < n; j++){
C[iArr[j]]++;
};
// 遍历C,输出数组
for(var k = 0; k <= max; k++){
// 按顺序将值推入输出数组,并将对应标志位减1 , 减减是有重复数字的标志位要减一
while ((C[k]--) > 0) {
oArr.push(k);
}
}
return oArr;
}
console.log(countingSort([5, 2, 4, 6, 1, 3,3,3], 10))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
← 基础工具方法