【发布时间】:2012-01-01 19:16:07
【问题描述】:
我正在尝试改进超过 10000 的大数的存储桶排序。我不太确定,为什么我的代码在大数上表现不佳。 我的大小为 n 的数组的桶排序算法:
- 创建大小为 n 的链表数组
计算数字的范围
计算每个桶的间隔
- 计算存储桶的索引,将特定数字放在哪里 (问题:我通过不断从数字中减去间隔和递增计数器来计算索引,每次我减去间隔。计数器是索引) 我相信这种查找索引的特殊方法对于大量数据需要很长时间。 如何改进存储桶的查找索引?
附:我听说有办法预处理数组并找到数组的最小和最大数量。然后通过从 min 中减去特定数字来计算索引。指数=数字-分钟。我不太明白计算索引的想法。 问题: 1.这是查找索引的有效方法吗? 2. 当我的数组大小为 4,数字为 31、34、51、56 时,我该如何处理? 31 去桶 0,34 去桶 3,51 和 56 怎么样? 3. 有没有其他方法计算指数?
【问题讨论】: