排序(3)--各類排序演算法的比較
從表中可得出一些結論:
(1)從平均時間效能而言,快速排序最佳,其所需時間最省,但快速排序在最壞情況下的時間效能不如堆排序和歸併排序。而後兩者相比較的結果是,在n較大時,歸併排序所需時間較堆排序省,但它所需的輔助儲存量最多。
(2)簡單排序包括除希爾排序之外的所有插入排序,氣泡排序和簡單選擇排序,其中以直接插入排序為最簡單,當序列中的記錄“基本有序”或n值較小時,它是最佳的排序方法,因此常將它和其它的排序方法,諸如快速排序、歸併排序等結合在一起使用。
(3)基數排序的時間複雜度也可寫成O(d·n)。因此,它最適用於n值很大而關鍵字較小的序列。若關鍵字也很大,而序列中大多數記錄的“最高位關鍵字”均不同,則亦可先按“最高位關鍵字”不同將序列分成若干“小”的子序列,而後進行直接插入排序。
(4)從方法的穩定性來比較,基數排序是穩定的,所有時間複雜度為O(n2)的簡單排序法(除簡單選擇)也是穩定的,而快排、堆排序和希爾排序等時間效能較好的排序方法都是不穩定的。一般來說,排序過程中的“比較”是在“相鄰的兩個記錄關鍵字”間進行的排序方法是穩定的。
相關文章
- 排序演算法效能比較排序演算法
- 圖形化排序演算法比較:快速排序、插入排序、選擇排序、氣泡排序排序演算法
- 常用的比較排序演算法總結排序演算法
- 堆排序和快速排序效能比較排序
- 定製排序和比較器排序排序
- 幾種排序的比較排序
- 氣泡排序、歸併排序與快速排序比較排序
- 各類排序演算法的c++實現排序演算法C++
- 三種高階比較排序演算法排序演算法
- Java排序演算法速度比較(轉載)Java排序演算法
- 氣泡排序、快速排序(遞迴&非遞迴)、堆排序演算法比較淺析排序遞迴演算法
- 【演算法】6 比較排序之外學習新的線性時間排序演算法排序
- 學習筆記--- 比較排序之堆排序筆記排序
- 5種排序演算法效能比較總結排序演算法
- #排序演算法#【3】堆排序排序演算法
- 11.經典O(n²)比較型排序演算法排序演算法
- 各大排序演算法效能比較及演示例項排序演算法
- 【資料結構與演算法】非比較排序(計數排序、桶排序、基數排序)資料結構演算法排序
- 排序演算法對比排序演算法
- 資料結構-各種排序演算法效率對比圖資料結構排序演算法
- 對c語言系統庫函式、堆排序、希爾排序、折半插入排序、快速排序消耗時間的比較C語言函式排序
- Java 8 比較器:如何對 List 排序Java排序
- 排序演算法(3)插入排序(Insertion Sort)排序演算法
- ***PHP陣列排序+php二維陣列排序方法(PHP比較器)PHP陣列排序
- Python各種排序演算法整理Python排序演算法
- 複習資料結構:排序演算法(五)——快速排序的各種版本資料結構排序演算法
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- 各種排序的原理排序
- 聽聽各種排序演算法的聲音排序演算法
- 利用compareTo方法進行字串比較排序字串排序
- Js比較對Object型別進行排序JSObject型別排序
- 《演算法筆記》4. 堆與堆排序、比較器詳解演算法筆記排序
- Rxjs實踐-各種排序演算法排序過程的視覺化展示JS排序演算法視覺化
- 排序演算法__桶排序排序演算法
- 排序演算法__快速排序排序演算法
- 排序演算法__希爾排序排序演算法
- 排序演算法__堆排序排序演算法
- 排序演算法:快速排序排序演算法