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 "腳本之家測試結(jié)果:" print bucketSort(nums) """ [0, 0, 1, 2, 2, 3, 5, 6, 8, 65] """
運行結(jié)果:
總體來說,桶排序的優(yōu)點就是特別快,真的是特別快!特別快!特別塊!而缺點就是特別耗資源,如果數(shù)據(jù)取值的范圍是0---1010, 就要申請一個大小為1010的數(shù)組,想想這得多耗內(nèi)存空間。闊怕!且桶排序只能排序大于零的整數(shù)。
PS:關(guān)于排序算法的詳細說明還可參考本站在線工具:
在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具
http://tools.jb51.net/aideddesign/paixu_ys
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程》
希望本文所述對大家Python程序設計有所幫助。
相關(guān)文章
利用Hyperic調(diào)用Python實現(xiàn)進程守護
這篇文章主要為大家詳細介紹了利用Hyperic調(diào)用Python實現(xiàn)進程守護,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01Python reduce()函數(shù)的用法小結(jié)
reduce()函數(shù)即為化簡函數(shù),它的執(zhí)行過程為:每一次迭代,都將上一次的迭代結(jié)果,需要的朋友可以參考下2017-11-11教你如何使用Python快速爬取需要的數(shù)據(jù)
學點數(shù)據(jù)爬蟲基礎能讓繁瑣的數(shù)據(jù)CV工作(Ctrl+C,Ctrl+V)成為自動化就足夠了.作為一名數(shù)據(jù)分析師而并非開發(fā)工程師,需要掌握的爬蟲必備的知識內(nèi)容,能獲取需要的數(shù)據(jù)即可 ,需要的朋友可以參考下2021-06-06使用Python構(gòu)建Hopfield網(wǎng)絡的教程
這篇文章主要介紹了使用Python構(gòu)建Hopfield網(wǎng)絡的教程,本文來自于IBM官方網(wǎng)站的技術(shù)文檔,需要的朋友可以參考下2015-04-04python3的url編碼和解碼,自定義gbk、utf-8的例子
今天小編就為大家分享一篇python3的url編碼和解碼,自定義gbk、utf-8的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08