排序算法:桶排序(Python)

思路:桶排序是计数排序的升级版。在额外空间充足的情况下,尽量增大桶的数量。使用的映射函数能够将输入的 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))

总结

大桶装小桶,用桶换时间!

你可能感兴趣的:(排序算法,算法)