【问题标题】:Does the radix size used for radix sort algorithm matter in a practice?用于基数排序算法的基数大小在实践中是否重要?
【发布时间】:2020-09-22 17:15:47
【问题描述】:

我听说基数排序的最坏情况下的内存情况是 O(n+r),其中 n 是数组大小,r 是基数。但是由于在计算中很少使用超过基数 16 的任何东西,所以在实践中 r=2 或 r=100 真的很重要吗?对空间有什么真正的影响吗?

【问题讨论】:

  • 不知道你为什么说“在计算中很少使用超过基数 16 的东西”。这和这有什么关系?
  • 在数字中,使用的基数很少超过 16。我相信它可以是 255 用于 ASCII,来自somewhere I read

标签: sorting memory radix-sort


【解决方案1】:

这应该是最坏情况空间 O(n + r logr(range)),其中 range 是要排序的值的范围。例如,对于 64 位整数范围 = 2^64,如果对 64 位整数进行基数排序,基数为 256,log256(2^64) = 8,这是所需的基数排序次数。最糟糕的空间使用情况是使用所有通道的矩阵,例如用于对 64 位无符号整数以 256 为底的排序的 8 x 256 矩阵:matrix[8][256]。最坏情况下的空间开销是用于基数排序的临时数组的大小 = n 个元素加上矩阵的大小。对于以 256 为基数排序的 64 位整数的示例:

n + r · ceil(log256(2^64)) = n + 256 · 8.

【讨论】:

  • 这不是说它没有真正的影响吗?因为考虑到基数排序的最佳用例,我会说 8x8x256 肯定会太微不足道
  • @pintert3 - 如果使用基数 65536 (2^26),则索引 |计数存储在 4 x 65536 x 8 或 4 x 65536 x 4 矩阵中,它使用的空间比基数 256 多。
猜你喜欢
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多