第 29 題:如何理解桶排序?
阿新 • • 發佈:2021-08-23
什麼是桶排序?
桶排序是計數排序的升級版,有些排序場景計數排序無法使用(數值超出範圍或者不是整數)。將資料分到有限數量的桶裡,每個桶再分別排序(有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序)
演算法描述
設定 n 個數量的空桶,並且確定每個桶的範圍;
遍歷輸入資料,並且把資料一個一個放到對應的桶裡去;
對每個可以進行排序(桶裡面的數量大於 1 個)的桶進行排序;
把排序好的桶拼接起來
栗子
每一個桶代表一個區間範圍,裡面可以承載一個或多個元素。
桶排序的第一步,就是建立這些桶,確定每一個桶的區間範圍
這個時候就會有人提問,怎麼知道建立多少個桶?每個桶的範圍是多少呢?
具體建立多少個桶,如何確定桶的區間範圍,有很多不同的方式,由實際情況去定義
這裡只舉例其中一種,建立的桶數量等於原始序列的元素數量,除了最後一個桶只包含數列最大值,前面各個桶的區間按照比例確定
區間跨度 (求平均值)= (最大值-最小值)/ (桶的數量 - 1)
第二步,遍歷原始序列,把元素對號入座放入各個桶中
第三步,每個桶內部的元素分別排序(顯然,只有第一個桶需要排序)
最後一步,遍歷所有的桶,輸出所有元素
0.5,0.84,2.18,3.25,4.5
參考資料
值得收藏的十大經典排序演算法
漫畫:什麼是桶排序?
文章的內容/靈感都從下方內容中借鑑
-
【持續維護/更新 500+前端面試題/筆記】https://github.com/noxussj/Interview-Questions/issues
-
【大資料視覺化圖表外掛】https://www.npmjs.com/package/ns-echarts
-
【利用 THREE.JS 實現 3D 城市建模(珠海市)】https://3d.noxussj.top/