各類排序總結(總)

排序法數組

平均時間spa

最差情形排序

穩定度ci

額外空間table

備註tab

冒泡移動

O(n2)di

    O(n2)時間

穩定ab

O(1)

n小時較好

交換

O(n2)

    O(n2)

不穩定

O(1)

n小時較好

選擇

O(n2)

O(n2)

不穩定

O(1)

n小時較好

插入

O(n2)

O(n2)

穩定

O(1)

大部分已排序時較好

基數

O(logRB)

O(logRB)

穩定

O(n)

B是真數(0-9),

R是基數(個十百)

Shell

O(nlogn)

O(ns) 1<s<2

不穩定

O(1)

s是所選分組

快速

O(nlogn)

O(n2)

不穩定

O(nlogn)

n大時較好

歸併

O(nlogn)

O(nlogn)

穩定

O(n)

n大時較好

O(nlogn)

O(nlogn)

不穩定

O(1)

n大時較好

 

  1. 若n較小:直接選擇或直接插入。此時若是記錄自己信息量較大應選擇直接選擇排序,由於直接插入排序的移動記錄次數比直接選擇多不少。
  2. 若n較大,應選擇時間爲O(nlogn)的快排、歸併或堆排序。快排時間依賴於數組原始狀況,當原始數組較隨機時時間短;歸併不依賴與數組的原始狀況,可是有空間代價爲o(n)。
  3. 當原始數組基本有序時用直接插入或冒泡排序。
相關文章
相關標籤/搜索