#-*- 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=[[0 for i in range(bucketNum)] for j in range(bucketNum)]
for i in range(bucketNum):
num=int((string[i]-min1)*(bucketNum-1)/n)
bucketList[num].append(string[i])
#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)
数据结构之桶排序(python实现)
最新推荐文章于 2022-01-20 17:19:40 发布