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

總體來(lái)說(shuō),桶排序的優(yōu)點(diǎn)就是特別快,真的是特別快!特別快!特別塊!而缺點(diǎn)就是特別耗資源,如果數(shù)據(jù)取值的范圍是0---1010, 就要申請(qǐng)一個(gè)大小為1010的數(shù)組,想想這得多耗內(nèi)存空間。闊怕!且桶排序只能排序大于零的整數(shù)。
PS:關(guān)于排序算法的詳細(xì)說(shuō)明還可參考本站在線工具:
在線動(dòng)畫(huà)演示插入/選擇/冒泡/歸并/希爾/快速排序算法過(guò)程工具
http://tools.jb51.net/aideddesign/paixu_ys
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- 基于python進(jìn)行桶排序與基數(shù)排序的總結(jié)
- python算法學(xué)習(xí)之桶排序算法實(shí)例(分塊排序)
- 10個(gè)python3常用排序算法詳細(xì)說(shuō)明與實(shí)例(快速排序,冒泡排序,桶排序,基數(shù)排序,堆排序,希爾排序,歸并排序,計(jì)數(shù)排序)
- python實(shí)現(xiàn)計(jì)數(shù)排序與桶排序?qū)嵗a
- Python數(shù)據(jù)結(jié)構(gòu)與算法之常見(jiàn)的分配排序法示例【桶排序與基數(shù)排序】
- Python實(shí)現(xiàn)桶排序與快速排序算法結(jié)合應(yīng)用示例
- Python實(shí)現(xiàn)希爾排序,歸并排序和桶排序的示例代碼
- Python桶排序原理與實(shí)現(xiàn)詳解
相關(guān)文章
解決python打不開(kāi)文件(文件不存在)的問(wèn)題
今天小編就為大家分享一篇解決python打不開(kāi)文件(文件不存在)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
Python可變和不可變、類(lèi)的私有屬性實(shí)例分析
這篇文章主要介紹了Python可變和不可變、類(lèi)的私有屬性,結(jié)合實(shí)例形式分析了Python值可變與不可變的情況及內(nèi)存地址變化,類(lèi)的私有屬性定義、訪問(wèn)相關(guān)操作技巧,需要的朋友可以參考下2019-05-05
Python 常用日期處理 -- calendar 與 dateutil 模塊的使用
這篇文章主要介紹了Python如何使用calendar 與 dateutil 模塊處理日期,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-09-09
解決python selenium3啟動(dòng)不了firefox的問(wèn)題
今天小編就為大家分享一篇解決python selenium3啟動(dòng)不了firefox的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10

