在排序时,到底是什么定义了存储桶的大小?与计数时一样,大小从0到max,基数中的桶大小是0-9。
发布于 2018-12-01 13:12:18
Bucket Sort中的"buckets“数量对应于并依赖于要排序的的可能值的范围。例如,如果我考虑以下值:
1, 4, 10000, 5, 12我排序的值的范围是9999。
range = (highest value) - (lowest value) = 10000 - 1 = 9999 buckets这意味着我需要9999个存储桶来尽可能高效地对这些值进行排序。这是因为Bucket排序不是比较排序。这意味着不会通过值之间的比较来确定它们的顺序。它们被简单地放在代表它们的值的存储桶中。存储桶排序因此被誉为O(n),但由于需要创建的存储桶数量,它实际上往往效率要低得多。
在前面的示例中,我们只对5个值进行了排序,但需要创建10,000个以上的存储桶。当存储桶数量在O(N^2)的时间复杂度内时,这是非常低效的,这使得存储桶排序与传统的比较排序算法一样耗时(如果不是,则更差)。但是,如果条件合适,则Bucket Sort可能是一个很好的选择。
https://stackoverflow.com/questions/52637671
复制相似问题