3

我知道基数排序通过比较数字的数字来工作。我的问题是,假设我们有不同位数的不同数字。基数排序在这里工作吗?我们可以简单地假设,例如,如果我们比较两个数字,一个是 3 位数字,一个是 6 位数字,较小数字的前 3 位是 0。但是如何实现呢?我们如何让程序假设如果没有足够的数字,那么这些数字为零?

谢谢你。

4

2 回答 2

2

您需要以某种方式添加或模拟那些不存在的数字或将数字分组排序,每个数字仅包含相同长度的数字。

这3个数字

9912
 999
 123

可以转化为

9912
0999
0123

并使用常规基数排序进行排序,或者可以将它们排序为 2 个独立的组:

9912

 999
 123

后者会给你(假设升序)

 123
 999

前者保持不变。然后组合排序后的组(从较短的数字到较长的数字):

 123
 999
9912

就这样。

于 2013-03-22T11:57:34.547 回答
1

假设您有一个整数变量中的数字,那么您可以像这样提取数字(n = 0, 1, 2, ...):

digit = (number / radix ^ n) % radix
于 2013-03-22T12:10:33.480 回答