1. 程式人生 > 其它 >第 29 題:如何理解桶排序?

第 29 題:如何理解桶排序?

什麼是桶排序?

桶排序是計數排序的升級版,有些排序場景計數排序無法使用(數值超出範圍或者不是整數)。將資料分到有限數量的桶裡,每個桶再分別排序(有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序)

演算法描述

設定 n 個數量的空桶,並且確定每個桶的範圍;

遍歷輸入資料,並且把資料一個一個放到對應的桶裡去;

對每個可以進行排序(桶裡面的數量大於 1 個)的桶進行排序;

把排序好的桶拼接起來

栗子

每一個桶代表一個區間範圍,裡面可以承載一個或多個元素。

桶排序的第一步,就是建立這些桶,確定每一個桶的區間範圍

這個時候就會有人提問,怎麼知道建立多少個桶?每個桶的範圍是多少呢?

具體建立多少個桶,如何確定桶的區間範圍,有很多不同的方式,由實際情況去定義

這裡只舉例其中一種,建立的桶數量等於原始序列的元素數量,除了最後一個桶只包含數列最大值,前面各個桶的區間按照比例確定

區間跨度 (求平均值)= (最大值-最小值)/ (桶的數量 - 1)

第二步,遍歷原始序列,把元素對號入座放入各個桶中

第三步,每個桶內部的元素分別排序(顯然,只有第一個桶需要排序)

最後一步,遍歷所有的桶,輸出所有元素

0.5,0.84,2.18,3.25,4.5

參考資料
值得收藏的十大經典排序演算法
漫畫:什麼是桶排序?

文章的內容/靈感都從下方內容中借鑑