思路:桶排序是计数排序的升级版。在额外空间充足的情况下,尽量增大桶的数量。使用的映射函数能够将输入的 N 个数据均匀的分配到 K 个桶中。
一图解百惑,上图!
话不多说,上代码!
def bucket_sort(input_list):
l = input_list
if not l:
return []
l_max, l_min = max(l), min(l)
bucket_len = int(l_max - l_min) + 1
buckets: list[list] = [[] for _ in range(bucket_len)]
for i in l:
buckets[int(i - l_min)].append(i)
return [i for bucket in buckets for i in sorted(bucket)]
if __name__ == '__main__':
test = [4,3,2,1]
print(bucket_sort(test))