原理
就是将数据集里所有元素按顺序列举出来,然后统计元素出现的次数,最后按顺序输出数据集里面的元素
应用场景
- 成绩统计
- 当范围已经知道,而且空间不是很重要的情况下
总结
- n<50的时候可以直接采用插入和选 择排序
- 初始文件状态基本有序的时候用插入或者冒泡
- 若n比较大的时候用快排(特别是关键字随机分布的时候)
- 数据比较大,稳定性要求高可以考虑归并
过程
排序过程如下: 有一组数据:6, 8, 2, 3, 4, 0, 9, 1, 5,1
def bucket_sort(lst):
buckets = [0] * ((max(lst) - min(lst))+1)
for i in range(len(lst)):
# 对lst中每个元素来说,lst[i] -
# min(list) 索引是这个元素在buckets中
# 的位置, +=1使用来计数的。
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
print(bucket_sort([5, 13, 2, 65, 22, 4, 7, 9, 1, 1, 1]))