# 数据结构和算法

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. 计数排序

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
最后更新时间: 3/27/2023, 5:34:04 PM