排序算法總結:
排序方法 |
平均時間 |
最壞情況 |
輔助存儲 |
簡單排序 |
O(n2) |
O(n2) |
O(1) |
快速排序 |
O(nlogn) |
O(n2) |
O(logn) |
堆排序 |
O(nlogn) |
O(nlogn) |
O(1) |
歸併排序 |
O(nlogn) |
O(nlogn) |
O(n) |
基數排序 |
O(d(n+rd)) |
O(d(n+rd)) |
O(rd) |
快排所需時間最省,但在最壞情況下的時間性能不如堆排序和歸併排序。
堆排序和歸併排序比較後,如果N較大的話,歸併排序所需時間比堆排序要好,但所需要的輔助存儲量最多。
當序列基本有序的情況下或n較小時,簡單排序(包含插入排序、冒泡排序和簡單選擇排序)是最佳的排序方法,所以結合快速排序和歸併排序等一同使用。
基數排序時間複雜度也可以寫爲O(d*n),適用於n值很大而關鍵字數量較小的序列。
總之,沒有哪一種排序方式是絕對最優的,需要根據不同的情況採用不同的排序方法。