經典算法(十)----桶排序----圖解法讓你快速入門

引言

前面學習了計數排序和基數排序,其實桶排序就是他們的升級版,在這篇文章中主要會說明桶排序的思想,就不放桶排序的代碼了,因爲桶排序用的較少,至於爲啥他用的很少,下面會說。

這篇文章從一下兩個角度分析桶排序

  1. 桶排序的思想
  2. 桶排序的問題

一、桶排序的思想

假如我們對0.0  0.12  0.18  0.93  0.45  0.76  0.89  0.03  0.55  0.98 0.67  1.0這十二個數排序。桶排序的思想就主要分三步

  1. 設計好有幾個桶,每個桶的範圍都爲多少
  2. 對每個桶進行排序
  3. 按照順序,把每個桶的數據都取出來

下面看圖

我們一共分了四個桶,每個的範圍也都提前規定好了。截止到現在,第一步就完成了

第二步就是對每個桶進行排序,這裏採取的排序方法可以任選,沒有硬性規定。

第三步就是按照桶排序好的順序,一個個把桶內的數據輸出來。

到此爲止,桶排序的思想就說完了,思想比較容易理解,但是實現比較困難,下面展開說。

二、桶排序的問題

首先再總結一下流程,

  1. 求要排序數組的最大值和最小值,根據這兩個值,再根據定幾個桶,來定每個桶的範圍。
  2. 對每個桶都進行排序。
  3. 按照順序輸出每個桶的數據

下面說爲啥桶排序不常用的原因。

  1. 每個桶如果用數組存數據,那如果數組不夠用怎麼辦?,因爲一組數可能有的很集中,有的很分散,如果數組開大了,那分散的數,就會造成空間浪費。
  2. 如果每個桶用鏈表存,那就不用提前開闢空間了,但是又存在了時間問題,因爲如果對鏈表進行排序,只能進行一遍一遍的遍歷(訪問鏈表的數據不能隨機訪問),那時間複雜度就特別大了。
  3. 如果一個要排序的數據特別集中,比如有1000個數據,結果超過了800個數據在一個桶內,那桶排序的優勢更體現不出來了。

 

如果對其他的算法還有興趣,可以點擊下面的鏈接。

  1. 經典算法(一)----冒泡排序----圖解法讓你快速入門

  2. 經典算法(二)----選擇排序----圖解法讓你快速入門

  3. 經典算法(三)----插入排序----圖解法讓你快速入門

  4. 經典算法(四)----希爾排序----圖解法讓你快速入門

  5. 經典算法(五)----歸併排序----圖解法讓你快速入門

  6. 經典算法(六)----快速排序----圖解法讓你快速入門

  7. 經典算法(七)----  堆排序 ----圖解法讓你快速入門

  8. 經典算法(八)----計數排序----圖解法讓你快速入門

  9. 經典算法(九)----基數排序----圖解法讓你快速入門

  10. 經典算法(十)----  桶排序  ----圖解法讓你快速入門

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章