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