写了一个很简单的桶排序,时间复杂度 2n.
def bucket(lst):
buckets = [0] * ((max(lst) - min(lst))+1)
for i in range(len(lst)):
buckets[lst[i]-min(lst)] += 1
res=[]
for i in range(len(buckets)):
if buckets[i] != 0:
res += [i+min(lst)]*buckets[i]
return res
鉴于算法不是太复杂,就只简单说明一下。
桶排序的原理很简单,就是设置一个个的桶,将需要排序的对象列表按顺序放入桶里面。
桶排序对于相同对象特别多的列表速度特别快。但是遗憾的是需要排序的对象必须是已知的数值。
桶排序可以应用在排列考试成绩等等的场景里面(因为数千人、数万人的成绩只有数百个,拥有同一成绩的人特别多)。