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ō)明還可參考本站在線(xiàn)工具:
在線(xiàn)動(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實(shí)現(xiàn)的計(jì)數(shù)排序算法示例
- python計(jì)數(shù)排序和基數(shù)排序算法實(shí)例
- python算法學(xué)習(xí)之計(jì)數(shù)排序?qū)嵗?/a>
- 基于python進(jìn)行桶排序與基數(shù)排序的總結(jié)
- Python數(shù)據(jù)結(jié)構(gòu)與算法之常見(jiàn)的分配排序法示例【桶排序與基數(shù)排序】
- Python實(shí)現(xiàn)桶排序與快速排序算法結(jié)合應(yīng)用示例
- python實(shí)現(xiàn)計(jì)數(shù)排序與桶排序?qū)嵗a
相關(guān)文章
利用Hyperic調(diào)用Python實(shí)現(xiàn)進(jìn)程守護(hù)
這篇文章主要為大家詳細(xì)介紹了利用Hyperic調(diào)用Python實(shí)現(xiàn)進(jìn)程守護(hù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01Python reduce()函數(shù)的用法小結(jié)
reduce()函數(shù)即為化簡(jiǎn)函數(shù),它的執(zhí)行過(guò)程為:每一次迭代,都將上一次的迭代結(jié)果,需要的朋友可以參考下2017-11-11教你如何使用Python快速爬取需要的數(shù)據(jù)
學(xué)點(diǎn)數(shù)據(jù)爬蟲(chóng)基礎(chǔ)能讓繁瑣的數(shù)據(jù)CV工作(Ctrl+C,Ctrl+V)成為自動(dòng)化就足夠了.作為一名數(shù)據(jù)分析師而并非開(kāi)發(fā)工程師,需要掌握的爬蟲(chóng)必備的知識(shí)內(nèi)容,能獲取需要的數(shù)據(jù)即可 ,需要的朋友可以參考下2021-06-06使用Python構(gòu)建Hopfield網(wǎng)絡(luò)的教程
這篇文章主要介紹了使用Python構(gòu)建Hopfield網(wǎng)絡(luò)的教程,本文來(lái)自于IBM官方網(wǎng)站的技術(shù)文檔,需要的朋友可以參考下2015-04-04Python的類(lèi)實(shí)例屬性訪(fǎng)問(wèn)規(guī)則探討
這篇文章主要介紹了Python的類(lèi)實(shí)例屬性訪(fǎng)問(wèn)規(guī)則,本文總結(jié)了一些對(duì)C++和Java程序員來(lái)說(shuō)不是很直觀的地方來(lái)說(shuō)明Python中的類(lèi)實(shí)例屬性訪(fǎng)問(wèn),需要的朋友可以參考下2015-01-01python3的url編碼和解碼,自定義gbk、utf-8的例子
今天小編就為大家分享一篇python3的url編碼和解碼,自定義gbk、utf-8的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08