#-*- 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)