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

比較類排序:算法

類型 時間複雜度 空間複雜度
冒泡  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)

 

穩定性的概念:spa

  假定待排序的記錄序列中,存在多個具備相同的關鍵字的記錄,若通過排序,這些記錄的相對次序保存不變,稱這種排序算法是穩定的,不然稱爲不穩定的。3d

穩定的排序算法:blog

冒泡  插入  歸併  計數  基數  桶排序

不穩定的排序算法:table

選擇  快速  希爾  堆遍歷

冒泡排序im

選擇排序數據

 

插入排序

歸併排序

快速排序

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

 

希爾排序

堆排序:

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

計數排序

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

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

基數排序

相關文章
相關標籤/搜索