基数排序是否适用于具有不同位数的数字?

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

左侧零填充,直到所有字符串的长度与最长输入字符串相同。 - Khaled.K
2个回答

2
你需要想办法添加或模拟不存在的数字,或者按照长度分组排序数字。这里有三个数字:
9912
 999
 123

可以转换成
9912
0999
0123

这些数据可以使用常规基数排序进行排序,也可以分为两个独立的组进行排序:

9912

并且

 999
 123

后者将为您提供(假设升序)
 123
 999

前者不变,然后将排序后的组合并(从较短的数字到较长的数字):

 123
 999
9912

这就是全部。


1
假设您已经将数字存储在一个整数变量中,那么您可以按如下方式提取数字(n = 0, 1, 2, ...):
digit = (number / radix ^ n) % radix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接