算法 | 时间复杂度 | 空间复杂度 |
---|---|---|
快速排序 | 最优O(nlgn) 最差O(n²) | O(1) |
堆排序 | O(nlgn) | O(1) |
归并排序 | O(nlgn) | O(n)用来将两个排好序的数组合并 |
选择排序 | O(n²) 每次都要遍历一遍没有最优 | O(1) |
插入排序 | 最优 O(n) 数组已经排序 最差 O(n²) 逆序排序 |
O(1) |
冒泡排序 | 最优 O(n) 数组已经排序 最差 O(n²) 逆序排序 |
O(1) |
快排虽然最差是O(n²),但平均仍是O(nlgn) 其中堆排序,快速排序,选择排序是不稳定的算法,相等元素的相对位置会发生改变。 选择排序,举个例子,序列5 8 5 2 9, 咱们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对先后顺序就被破坏了算法
快速排序,好比序列为 5 3 3 4 3 8 9 10 11, 如今中枢元素5和3(第5个元素,下标从1开始计)交换就会把元素3的稳定性打乱数组