Python實現的桶排序演算法示例

2022-10-03 15:09:12 字數 1006 閱讀 1078

桶排序也叫計數排序,簡單來說,就是將資料集裡面所有元素按順序列舉出來,然後統計元素出現的次數。最後按順序輸出資料集裡面的元素。

但是桶排序非常浪費空程式設計客棧間, 比如需要排序的範圍在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 空間上不能原...