【发布时间】:2020-12-01 18:53:02
【问题描述】:
我正在学习桶排序,似乎很多材料都坚持认为,当键值“均匀分布并且用于对已知范围内的整数进行排序”时,它是有效的。我了解均匀分布的部分,但是您也必须知道范围吗?如果没有提供范围,在桶排序过程中创建辅助数组时,是否可以简单地创建一个可以自行扩展的动态数组(ArrayList)?
【问题讨论】:
标签: algorithm sorting bucket-sort
我正在学习桶排序,似乎很多材料都坚持认为,当键值“均匀分布并且用于对已知范围内的整数进行排序”时,它是有效的。我了解均匀分布的部分,但是您也必须知道范围吗?如果没有提供范围,在桶排序过程中创建辅助数组时,是否可以简单地创建一个可以自行扩展的动态数组(ArrayList)?
【问题讨论】:
标签: algorithm sorting bucket-sort
如果您不知道范围并满足值 1000000 - 它是否属于第一个存储桶?到第 10 个桶?到第 1000 个桶?
假设您认为它属于第 10 个桶(每个桶指的是 100000 个值)。但下一个值是 10 000 000,您需要制作 100 个桶。下一个是 1 000 000 000,现在您需要 10000 个桶(其中大部分是空的!)...
了解价值范围和分布有助于组织正确的存储桶结构以提供最佳排序时间。
【讨论】:
如果对整数类型进行排序,则整数类型的位数隐含最大范围,对于 32 位整数,最大范围为 2^32。
【讨论】: