十個經典排序算法(時間復雜度,空間復雜度,穩定性,動畫演示思想)


比較類排序:

類型 時間復雜度 空間復雜度
冒泡  O(n^2) O(1)
選擇  O(n^2) O(1)
插入  O(n^2) O(1)
歸並 O(n*logn) O(N)
快速 O(n*logn) O(logN)~O(N)
O(n*logn) O(1)
希爾 O(n*logn) O(1)

非比較類排序:

類型 時間復雜度 空間復雜度
計數排序 O(N) O(N)
基數排序 O(N) O(N)
桶排序 O(N) O(N)

 

穩定性的概念:

  假定待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保存不變,稱這種排序算法是穩定的,否則稱為不穩定的。

穩定的排序算法:

冒泡  插入  歸並  計數  基數  桶

不穩定的排序算法:

選擇  快速  希爾  堆

冒泡排序

選擇排序

 

插入排序

歸並排序

快速排序

  • 默認選擇第一個數為基數
  • 實現比基數小的數放在基數左邊,比基數大的數放在基數右邊
  • 設置左右兩個指標,不斷向中間靠,左邊尋找比基數大的數,標記,右邊尋找比基數小的數,標記,交換兩個標記位置的數
  • 直到兩個指標相遇,停止移動指標,交換基數位和左指標位置的數
  • 繼續重復以上步驟,對兩個區別的數進行同等操作

 

希爾排序

堆排序:

  • 建成大根堆
  • 堆頂元素和最后一個元素交換
  • 剔除最后一個元素
  • 變成大根堆,重復2,3步驟

計數排序

桶排序(計數排序升級版)

  • 設置一個定量的數組當作空桶;
  • 遍歷輸入數據,並且把數據一個一個放到對應的桶里去;
  • 對每個不是空的桶進行排序;
  • 從不是空的桶里把排好序的數據拼接起來。 

基數排序

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM