九種常用排序的效能分析總結 [zhuan]
http://blog.csdn.net/cjf_iceking/article/details/7953637
間間斷斷的將9種排序實現,並且將其以部落格筆記的形式記錄下來;現在就該來綜合的分析這九種排序,讓我們先來看看其演算法複雜度和穩定性的分析結果:
演算法複雜度以及穩定性分析
演算法名稱 | 平均時間 | 輔助空間 | 穩定性 |
氣泡排序 | O(n2) | O(1) | 是 |
選擇排序 | O(n2) | O(1) | 否 |
插入排序 | O(n2) | O(1) | 是 |
自底向上歸併排序 | O(nlog2n) | O(n) | 是 |
自頂向下歸併排序 | O(nlog2n) | O(n) | 是 |
快速排序 | O(nlog2n) | O(n) | 否 |
堆排序 | O(nlog2n) | O(1) | 否 |
基數排序 | O(dn) | O(rn) | 是 |
希爾排序 | \ | O(1) | 否 |
排序的時間效率比較
下圖表名了各種演算法在不同資料規模下,完成排序所消耗的時間(毫秒為單位),從表中可以顯然看出O(n2)的排序演算法比O(nlog2n)的演算法 時間多出幾百上千倍,而且隨著資料資料規模增大時間比也會隨著增大;因為排序的資料採用隨機數,順序將被打亂,快速排序演算法優於其他排序演算法!
演算法名稱 | 1萬 | 2萬 | 3萬 | 4萬 | 5萬 | 6萬 | 7萬 | 8萬 | 9萬 | 10萬 |
氣泡排序 | 1442 | 5497 | 12206 | 21861 | 34017 | 49148 | 67394 | 88880 | 111939 | 139071 |
選擇排序 | 199 | 816 | 1790 | 3254 | 5062 | 7166 | 9645 | 12636 | 16102 | 19643 |
插入排序 | 178 | 717 | 1628 | 2882 | 4458 | 6446 | 8822 | 11649 | 14547 | 17914 |
自底向上歸併排序 | 10 | 20 | 30 | 42 | 50 | 60 | 70 | 80 | 96 | 103 |
自頂向下歸併排序 | 19 | 24 | 36 | 45 | 62 | 73 | 81 | 97 | 101 | 113 |
快速排序 | 2 | 5 | 8 | 11 | 14 | 18 | 21 | 25 | 29 | 32 |
堆排序 | 3 | 7 | 12 | 16 | 19 | 23 | 26 | 30 | 34 | 37 |
基數排序 | 9 | 21 | 30 | 40 | 49 | 59 | 66 | 75 | 90 | 98 |
希爾排序 | 3 | 8 | 11 | 15 | 24 | 24 | 29 | 35 | 40 | 41 |
相關文章
- 常用排序演算法總結(1)排序演算法
- 常用排序演算法總結(2)排序演算法
- 常用的比較排序演算法總結排序演算法
- 幾種常見的排序演算法總結排序演算法
- LaTeX中各種常用盒子的使用總結
- 幾種常用的排序程式碼排序
- Elasticsearch 技術分析(九):Elasticsearch的使用和原理總結Elasticsearch
- 第三章:查詢與排序(下)----------- 3.22 總結:10種排序演算法的對比分析排序演算法
- 幾種常見排序演算法總結排序演算法
- 九種排序演算法的 JavaScript 實現排序演算法JavaScript
- 幾種常用的排序演算法排序演算法
- 陣列效能問題分析總結陣列
- 六種排序演算法的JavaScript實現以及總結排序演算法JavaScript
- 專案總結 | 九種缺失值處理方法總有一種適合你
- css清除浮動float的七種常用方法總結CSS
- VSCode外掛開發全攻略(九)常用API總結VSCodeAPI
- 八種常用排序演算法排序演算法
- Hive常用效能優化方法實踐全面總結Hive優化
- 第九周總結
- 排序演算法分析總結(附js實現)排序演算法JS
- 九種常見的資料分析模型模型
- 簡述幾種常用的排序演算法排序演算法
- PerfDog效能狗上手體驗及總結分析
- 資料結構第九節(排序(上))資料結構排序
- 陣列的三種宣告方式總結、多維陣列的遍歷、Arrays類的常用方法總結陣列
- 基於桶的排序之基數排序以及排序方法總結排序
- Python基礎(九) 常用模組彙總Python
- 常用TS總結
- numpy 常用總結
- 【vim】常用總結
- PHP 中的氣泡排序總結PHP排序
- Python 程式設計中常用的 12 種基礎知識總結Python程式設計
- Python 程式設計中常用的12種基礎知識總結Python程式設計
- 總結常用的字串函式字串函式
- RCE漏洞常用的Payload總結
- 九年程式人生 工作總結
- 第九周學習總結
- java集合物件排序總結Java物件排序
- 資料分析-pandas資料處理清洗常用總結