算法 | 時間複雜度 | 空間複雜度 |
---|---|---|
快速排序 | 最優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的穩定性打亂數組