把陣列a劃分為n個大小相同子區間(桶),每個子區間各自排序,最後合併。桶排序要求資料的分布必須均勻,不然可能會失效。
計數排序是桶排序的一種特殊情況,可以把計數排序當成每個桶裡只有乙個元素的情況
(1) 設定乙個定量的陣列當作空桶(2) 遍歷輸入資料,並且把資料乙個乙個放到對應的桶裡去
(3) 對每個不是空的桶進行排序
(4) 從不是空的桶裡把排好序的資料拼接起來
def
bucket_sort
(alist)
: min_num =
min(alist)
max_num =
max(alist)
# 設定桶的大小
bucket_size =
(max_num - min_num)
/len
(alist)
# 建立桶陣列
bucket_list =[[
]for i in
range
(len
(alist)+1
)]# 向桶陣列填數
for num in alist:
bucket_list[
int(
(num-min_num)
//bucket_size)
] alist.clear(
)# 回填,這裡桶內部排序直接呼叫了sorted
for i in bucket_list:
for j in
sorted
(i):
return alist
十大排序演算法之桶排序(BucketSort)
一 前言 資料結構與演算法,順便刷leetcode,無意間發現了乙個 我覺得講解的比較好的網頁,並且會拿leetcode裡面的題目當做例題,如有需要,奉上 五分鐘學演算法 二 演算法實現的步驟 有限個數字m,每個數字的大小都在1與n之間,則我們可以假設有n個桶,遍歷m個數字,將其存入對應的桶中 如數...
十大排序演算法 桶排序(C語言)
桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 把待排序序列中的資料根據函式對映方法分配到若干個桶中,在分別對各個桶進行排序,最後依次按順序取出桶中的資料。適...
十大排序演算法
1.非線性時間類排序 時間複雜度未突破 0 nlog 2n 不穩定的四個排序演算法 選擇排序 0 n2 希爾排序 0 n1.3 希爾排序實現python 快速排序 0 n log2 n 0 nlog 2n 0 nlog 2 n 快速排序實現c python 堆排序 0 n log2 n 0 nlog...