《排序算法系列》

排序算法通過了很長時間的演變,產生了不少種不一樣的方法。對於初學者來講,對它們進行整理便於理解記憶顯得很重要。每種算法都有它特定的使用場合,很難通用。所以,咱們頗有必要對全部常見的排序算法進行概括。算法

排序大的分類能夠分爲兩種:內排序和外排序。在排序過程當中,所有記錄存放在內存,則稱爲內排序,若是排序過程當中須要使用外存,則稱爲外排序。下面講的排序都是屬於內排序。atom

內排序有能夠分爲如下幾類:spa

  (1)、插入排序:直接插入排序、二分法插入排序、希爾排序。xml

  (2)、選擇排序:直接選擇排序、堆排序。blog

  (3)、交換排序:冒泡排序、快速排序。排序

  (4)、歸併排序圖片

  (5)、基數排序內存

表格版:table

排序方法 時間複雜度(平均) 時間複雜度(最壞) 時間複雜度(最好) 空間複雜度 穩定性 複雜性
直接插入排序 O(n2)O(n2) O(n2)O(n2) O(n)O(n) O(1)O(1) 穩定 簡單
希爾排序 O(nlog2n)O(nlog2n) O(n2)O(n2) O(n)O(n) O(1)O(1) 不穩定 較複雜
直接選擇排序 O(n2)O(n2) O(n2)O(n2) O(n2)O(n2) O(1)O(1) 不穩定 簡單
堆排序 O(nlog2n)O(nlog2n) O(nlog2n)O(nlog2n) O(nlog2n)O(nlog2n) O(1)O(1) 不穩定 較複雜
冒泡排序 O(n2)O(n2) O(n2)O(n2) O(n)O(n) O(1)O(1) 穩定 簡單
快速排序 O(nlog2n)O(nlog2n) O(n2)O(n2) O(nlog2n)O(nlog2n) O(nlog2n)O(nlog2n) 不穩定 較複雜
歸併排序 O(nlog2n)O(nlog2n) O(nlog2n)O(nlog2n) O(nlog2n)O(nlog2n) O(n)O(n) 穩定 較複雜
基數排序 O(d(n+r))O(d(n+r)) O(d(n+r))O(d(n+r)) O(d(n+r))O(d(n+r)) O(n+r)O(n+r) 穩定 較複雜

 

 圖片版:class

相關文章
相關標籤/搜索