使用存储桶算法进行排序



排序时存储桶的大小究竟是什么?就像在计算大小一样 将从 0 到最大值,以基数为单位,存储桶大小为 0-9。

存储桶排序中的"存储桶"数量对应于并取决于要排序的可能值的范围。例如,如果我正在考虑以下值:

1, 4, 10000, 5, 12

我正在排序的值的范围是 9999。

range = (highest value) - (lowest value) = 10000 - 1 = 9999 buckets

这意味着我需要 9999 个存储桶来尽可能高效地对这些值进行排序。这是因为存储桶排序不是比较排序。这意味着不会将值相互比较以确定其顺序。它们只是放在代表其值的桶中。因此,存储桶排序被誉为O(n(,但由于需要创建的存储桶数量,它实际上往往效率低得多。

在前面的示例中,我们只对 5 个值进行排序,但需要创建超过 10,000 个存储桶。当桶数量在O(N^2(的时间复杂度内时,这是非常低效的,这使得桶排序的时间成本与传统的比较排序算法一样昂贵(如果不是,则更糟(。但是,如果条件合适,那么存储桶排序可能是一个不错的选择。

最新更新