排序算法之桶排序
2020-12-13 04:26
标签:style and 实现 dom 合并 比较 利用 color end 一、原理 桶排序是计数排序的升级版,如果计数排序中数的范围比较大呢?之前的计数排序数字范围是1-200,假如1-20000呢?利用桶排序就可以对其进行优化。 步骤: (1)将元素分在不同的桶中 (2)在对每一个桶中的元素进行排序 桶排序的的快慢取决于数据的分布: 关键点: 二、实现 排序算法之桶排序 标签:style and 实现 dom 合并 比较 利用 color end 原文地址:https://www.cnblogs.com/shenjianping/p/11109345.html
def binSort(li,min_num,max_num,bin_num=10):
bin=[[] for i in range(bin_num)]#[ [],[],[],... ]
for num in li:
n=(max_num-min_num+1)/bin_num #表示多少个数在一个桶里
bin[int(num // n)].append(num) #对应的数字放在对应的桶里
#维护桶有序,每一个桶使用插入排序,注意这是对每一个桶中的数进行排序
i=len(bin[int(num // n)])-1 #i表示桶中的最后一个数
tmp=bin[int(num // n)][i]
j=i-1
while j>=0 and tmp
#对每一个桶中的数进行合并,返回已经排序好的序列
res=[]
for l in bin:
res.extend(l)
return res
import random
li=[random.randint(0,600) for i in range(10000)]
print(binSort(li,0,600))