桶排序也叫計數排序,簡單來說,就是將資料集裡面所有元素按順序列舉出來,然後統計元素出現的次數。最後按順序輸出資料集裡面的元素。
但是桶排序非常浪費空程式設計客棧間, 比如需要排序的範圍在0~2000之間, 需要排序的數是[3,9,4,2000], 同樣需要2001個空間
注意: 桶排序不能排序小數
以下為從小到大**實現
#!/usr/bin/env python
# coding:utf-8
def bucketsort(nums):
# 選擇乙個最大的數
max_num = max(nums)
# 建立乙個元素全是0的列表, 當做桶
www.cppcns.com= [0]*(max_num+1)
# 把所有元素放入桶中, 即把對應元素個數加一
for i in nums:
bucket[i] += 1
# 儲存排序好的元素
sort_nums =
# 取出桶中的元素
for j in range(len(bucket)):
if bucket[j] != 0:
for y in range(bucket[j]):
sort_nums.append(j)
return sort_nums
nums yyxcxkndtm= [5,6,3,2,1,65,2,0,8,0]
print "我們測試結果:"
print bucketsort(nums)
"""[0, 0, 1, 2, 2, 3, 5, 6, 8, 65]
"""執行結果:
總體來說,桶排序的優點就是特別快,真的是特別快!特別快!特別塊!而缺點就是特別耗資源,如果資料取值的範圍是0---1010, 就要申請乙個大小為1010的陣列,想想這得多耗記憶體空間。闊怕!且桶排序只能排序大於零的整數。
ps:關於排序演算法的詳細說明還可參考本站**工具:
**動畫演示插入/選擇/冒泡/歸併/希爾/快速排序演算法過程式設計客棧程工具
排序演算法09 桶排序 Python實現
桶排序,主角當然是桶了 桶就是乙個列表,存放的是乙個範圍內的數,同時還是有序的 桶排序需要的是一組桶,桶之間的範圍連續且相等,比如第乙個桶範圍是10 19,第二個桶的範圍就是20 29 這些桶的範圍正好包括需要排序的數 其中我們能知道的就只有列表中數的範圍 max min 1 加一的目的是防止越界,...
排序 桶排序演算法實現
演算法名桶排序 分類排序演算法 複雜度線性 消耗儲存空間較大 實現形式 單鏈表特性 原址排序 具體參考出處 演算法導論 bucket sort.cpp 定義控制台應用程式的入口點。include stdafx.h include include include define data num 100...
Python實現桶排序
實現範圍為1 m的桶排序 對於陣列a,包含n個整數,值從1到m,我們可以利用一種非常快速的排序,桶排序 bucket sort 建立乙個陣列s,裡面含有m個桶,初始化為0。然後遍歷陣列a,讀入ai時,s ai 增一。所有輸入被讀進後,掃瞄陣列s得出排好序的表。該演算法時間花費o m n 空間上不能原...