基数排序是否与具有不同位数的数字一起使用?

时间:2013-03-22 11:47:56

标签: algorithm sorting radix-sort

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

谢谢。

2 个答案:

答案 0 :(得分:2)

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

这3个数字

9912
 999
 123

可以转化为

9912
0999
0123

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

9912

 999
 123

后者会给你(假设是升序)

 123
 999

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

 123
 999
9912

就是这样。

答案 1 :(得分:1)

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

digit = (number / radix ^ n) % radix