Python實現(xiàn)的桶排序算法示例
本文實例講述了Python實現(xiàn)的桶排序算法。分享給大家供大家參考,具體如下:
桶排序也叫計數(shù)排序,簡單來說,就是將數(shù)據(jù)集里面所有元素按順序列舉出來,然后統(tǒng)計元素出現(xiàn)的次數(shù)。最后按順序輸出數(shù)據(jù)集里面的元素。
但是桶排序非常浪費空間, 比如需要排序的范圍在0~2000之間, 需要排序的數(shù)是[3,9,4,2000], 同樣需要2001個空間
注意: 桶排序不能排序小數(shù)
以下為從小到大代碼實現(xiàn)
#!/usr/bin/env python
# coding:utf-8
def bucketSort(nums):
# 選擇一個最大的數(shù)
max_num = max(nums)
# 創(chuàng)建一個元素全是0的列表, 當做桶
bucket = [0]*(max_num+1)
# 把所有元素放入桶中, 即把對應元素個數(shù)加一
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 = [5,6,3,2,1,65,2,0,8,0]
print "腳本之家測試結果:"
print bucketSort(nums)
"""
[0, 0, 1, 2, 2, 3, 5, 6, 8, 65]
"""
運行結果:

總體來說,桶排序的優(yōu)點就是特別快,真的是特別快!特別快!特別塊!而缺點就是特別耗資源,如果數(shù)據(jù)取值的范圍是0---1010, 就要申請一個大小為1010的數(shù)組,想想這得多耗內(nèi)存空間。闊怕!且桶排序只能排序大于零的整數(shù)。
PS:關于排序算法的詳細說明還可參考本站在線工具:
在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具
http://tools.jb51.net/aideddesign/paixu_ys
更多關于Python相關內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結構與算法教程》、《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程》
希望本文所述對大家Python程序設計有所幫助。
相關文章
如何利用AJAX獲取Django后端數(shù)據(jù)詳解
ajax一個前后臺配合的技術,它可以讓javascript發(fā)送http請求,與后臺通信,獲取數(shù)據(jù)和信息。下面這篇文章主要介紹了如何利用AJAX獲取Django后端數(shù)據(jù)的相關資料,需要的朋友可以參考下2021-06-06
TensorFlow安裝CPU版本和GPU版本的實現(xiàn)步驟
本文主要介紹了TensorFlow安裝CPU版本和GPU版本的實現(xiàn)步驟,文中通過圖文示例介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-03-03
PyQt5結合QtDesigner實現(xiàn)文本框讀寫操作
本文將結合實例代碼,介紹PyQt5結合QtDesigner實現(xiàn)文本框讀寫操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06
Python實現(xiàn)字符串與數(shù)組相互轉換功能示例
這篇文章主要介紹了Python實現(xiàn)字符串與數(shù)組相互轉換功能,結合具體實例形式分析了Python字符串與數(shù)組相關轉換功能的相關實現(xiàn)技巧與注意事項,需要的朋友可以參考下2017-09-09
pandas實現(xiàn)datetime64與unix時間戳互轉
這篇文章主要介紹了pandas實現(xiàn)datetime64與unix時間戳互轉,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07

