Skip to the content.

优略度解释

性能总结

|算法类型|平均时间复杂度|最优情况 |最坏情况 |空间复杂度|排序方式 |稳定性| |:—: |:—: |:—: |:—: |:—: |:—: |:—:| |冒泡 |O(n²) |O(n) |O(n²) |O(1) |In-place|稳定| |选择 |O(n²) |O(n²) |O(n²) |O(1) |In-place|不稳定| |插入 |O(n²) |O(n) |O(n²) |O(1) |In-place|稳定| |希尔 |O(n log n) |O(n log² n)|O(n log² n)|O(1) |In-place|不稳定| |归并 |O(n log n) |O(n log n) |O(n log n) |O(n) |Out-place|稳定| |快速 |O(n log n) |O(n log n) |O(n²) |O(log n) |In-place|不稳定| |堆 |O(n log n) |O(n log n) |O(n log n) |O(1) |In-place|不稳定| |计数 |O(n + k) |O(n + k) |O(n + k) |O(k) |Out-place|稳定| |桶 |O(n + k) |O(n + k) |O(n²) |O(n + k) |Out-place|稳定| |基数 |O(n * k) |O(n * k) |O(n * k) |O(n + k) |Out-place|稳定|

1. 冒泡排序

function sort(arr) {
  for (var i = 0; i < arr.length - 1; i++) {
    for (var j = 0; j < arr.length - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        var swap = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = swap;
      }
    }
  }
  return arr;
}

var arrBefore = [9, 4, 9, 3, 9, 4, 7, 7, 1];
console.log("arrBefore: " + arrBefore);  // "arrBefore: 9,4,9,3,9,4,7,7,1"
var arrAfter = sort(arrBefore);
console.log("arrAfter: " + arrAfter);  // "arrAfter: 1,3,4,4,7,7,9,9,9"

未完~