各種排序算法及其複雜度

  • 穩定的
  冒泡排序(bubble sort) — O(n^2)
  雞尾酒排序(Cocktail sort,雙向的冒泡排序) — O(n^2)
  插入排序(insertion sort)— O(n^2)
  桶排序(bucket sort)— O(n); 需要 O(k) 額外空間
  計數排序(counting sort) — O(n+k); 需要 O(n+k) 額外空間
  合併排序(merge sort)— O(nlog n); 需要 O(n) 額外空間
  原地合併排序— O(n^2)
  二叉排序樹排序 (Binary tree sort) — O(nlog n)期望時間; O(n^2)最壞時間; 需要 O(n) 額外空間
  鴿巢排序(Pigeonhole sort) — O(n+k); 需要 O(k) 額外空間
  基數排序(radix sort)— O(n·k); 需要 O(n) 額外空間
  Gnome 排序— O(n^2)
  圖書館排序— O(nlog n) with high probability,需要 (1+ε)n額外空間
  • 不穩定的
  選擇排序(selection sort)— O(n^2)
  希爾排序(shell sort)— O(nlog n) 如果使用最佳的現在版本
  組合排序— O(nlog n)
  堆排序(heapsort)— O(nlog n)
  平滑排序— O(nlog n)
  快速排序(quicksort)— O(nlog n) 期望時間,O(n^2) 最壞情況; 對於大的、亂數列表一般相信是最快的已知排序
  Introsort— O(nlog n)
  Patience sorting— O(nlog n+ k) 最壞情況時間,需要 額外的 O(n+ k) 空間,也需要找到最長的遞增子串行(longest increasing subsequence)
  • 不實用的排序算法
  Bogo排序— O(n× n!) 期望時間,無窮的最壞情況。
  Stupid sort— O(n^3); 遞歸版本需要 O(n^2) 額外存儲器
  珠排序(Bead sort) — O(n) or O(√n),但需要特別的硬件
  Pancake sorting— O(n),但需要特別的硬件
  stooge sort——O(n^2.7)很漂亮但是很耗時
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章