桶排序,主角當然是桶了
桶就是乙個列表,存放的是乙個範圍內的數,同時還是有序的
桶排序需要的是一組桶,
桶之間的範圍連續且相等,比如第乙個桶範圍是10-19,第二個桶的範圍就是20-29
這些桶的範圍正好包括需要排序的數
其中我們能知道的就只有列表中數的範圍(max-min+1)加一的目的是防止越界,桶的個數需要自定義(n),
然後就能算出桶的範圍了
遍歷列表,計算出a[i]應該放入第幾個桶,放的時候要保證桶裡的元素有序,採用插入排序
最後遍歷桶中的元素,依次賦值給原列表
a = [9, 78, 54, 91, 86, 53, 88, 66, 46, 15]
"""定義桶的個數"""
n = 10
"""定義桶"""
buckets = [for i in range(n)]
"""找到列表中的最大值和最小值,確定每個桶中資料的取值範圍"""
max = a[0]
min = a[0]
for i in a:
if i > max:
max = i
if i < min:
min = i
num = (max - min + 1)/10
print(num)
"""遍歷列表,將每個數放到對應的桶裡,放的時候採用插入排序"""
for i in a:
d = int((i-min)//num) #計算i應該放到哪個桶裡
z = len(buckets[d])-2
while z >= 0 and i < buckets[d][z]:
buckets[d][z+1] = buckets[d][z]
z -= 1
buckets[d][z+1] = i
print(buckets)
"""將每個桶中的元素順序放回原陣列"""
count = 0
for list in buckets:
for item in list:
a[count] = item
count += 1
print(a)
排序演算法 桶排序
桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均勻分配的時候,桶排序使用線性時間 n 但桶排序並不...
排序演算法 桶排序
2009 12 02 12 01 2817人閱讀 桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均...
排序演算法 桶排序
桶排序 bucket sort 或所謂的箱排序的原理是將陣列分到有限數量的桶子裡,然後對每個桶子再分別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 最後將各個桶中的資料有序的合併起來。排序過程 假設待排序的一組數統一的分布在乙個範圍中,並將這一範圍劃分成幾個子範圍,也就是桶 ...