#-*- coding : utf-8 -*-
#每乙個桶代表乙個區間範圍,裡面可以承載乙個或多個元素
'''1.建立桶,並確定每乙個桶的區間範圍
2.遍歷原始數列,把元素對號入座放入各個桶中
3.對每個桶內部的元素分別進行排序
4.遍歷所有的桶,輸出所有元素
'''def
buckersort
(string)
:#1.得到數列的最大值
max1 = string[0]
for i in
range
(len
(string)):
if(max1 < string[i]):
max1 = string[i]
#得到數列的最小值
min1 = string[0]
for i in
range
(len
(string)):
if(min1 > string[i]):
min1 = string[i]
n = max1 - min1
#2.初始化並填充桶
bucketnum=
len(string)
bucketlist=[[
0for i in
range
(bucketnum)
]for j in
range
(bucketnum)
]for i in
range
(bucketnum)
: num=
int(
(string[i]
-min1)
*(bucketnum-1)
/n) bucketlist[num]
)#3.對每個桶內部進行排序
for i in
range
(len
(bucketlist)):
bucketlist[i]
.sort(
)#4.輸出全部結果
for i in
range
(len
(bucketlist)):
print
(bucketlist[i]
)string=
[4.12
,6.421
,0.0023
,3.0
,2.123
,8.122
,4.12
,10.09
]buckersort(string)
常用資料結構之桶式排序
關於桶式排序,其實以前見到過,當成了乙個排序技巧來記了。具體就是,有乙個序列,有n個數,並且每個數取值範圍是0 100。問如何快速的進行排序。那麼我們可以很容易想到,就是在開乙個大小為一百的陣列,並且初始化為0,然後遍歷所給的序列,比如遍歷到了23,就把23放入新開陣列下標為23的位置上,具體表現在...
Python 資料結構與演算法 桶排序
簡單的桶排序 defbucksort a bucks dict 定義乙個桶變數,型別為字典 for i in a bucks.setdefault i,每個桶預設為空列表 往對應的桶中新增對應相同元素 print bucks a sort for i in range min a max a 1 i...
資料結構排序系列詳解之九 桶排序
基本思想 假定輸入是由乙個隨機過程產生的 0,m 區間上均勻分布的實數。將區間 0,m 劃分為n個大小相等的子區間 桶 將n個輸入元素分配到這些桶中,對桶中元素進行排序,然後依次連線桶輸入0 a 1.n 桶 關鍵字 對映函式 bindex f key 其中,bindex 為桶陣列b的下標 即第bin...