0

我正在尝试改进超过 10000 的大数的存储桶排序。我不太确定,为什么我的代码在大数上表现不佳。我的大小为 n 的数组的桶排序算法:

  1. 创建大小为 n 的链表数组
  2. 计算数字的范围

  3. 计算每个桶的间隔

  4. 计算存储桶的索引,将特定数字放在哪里(问题:我通过不断从数字中减去间隔和递增计数器来计算索引,每次我减去间隔。计数器是索引)我相信这种查找索引的特殊方法需要很长时间数字。如何改进存储桶的查找索引?

PS我听说有办法预处理数组并找到数组的最小和最大数量。然后通过从 min 中减去特定数字来计算索引。指数=数字-分钟。我不太明白计算索引的想法。问题: 1. 这是查找索引的有效方法吗?2. 当我的数组大小为 4,数字为 31、34、51、56 时,我该如何处理?31 去桶 0,34 去桶 3,51 和 56 怎么样?3. 还有其他计算指数的方法吗?

4

1 回答 1

0

您可以通过 Division 更快地找到您的索引。指数 = 值 / 区间。如果第一个间隔从 'min' 而不是 0 开始,则使用 (value-min) 作为分子。

于 2011-11-21T22:00:39.357 回答