我知道基数排序是通过比较数字的数字来工作的。我的问题是,假设我们有不同位数的不同数字。基数排序在这里工作吗?我们可以简单的假设,比如比较两个数,一个是3位,一个是6位,比较小的那个数的前3位是0,但是怎么实现呢?我们如何让程序假设如果没有足够的数字,那么这些数字为零?
谢谢。
最佳答案
您需要以某种方式添加或模拟那些不存在的数字或对数字进行分组排序,每组数字仅包含相同长度的数字。
这3个数字
9912
999
123
可以转化为
9912
0999
0123
并使用常规基数排序进行排序,或者可以将它们排序为 2 个独立的组:
9912
和
999
123
后者会给你(假设升序)
123
999
而前者保持不变。然后你组合排序的组(从较短的数字到较长的数字):
123
999
9912
就这些。
关于algorithm - 基数排序是否适用于位数不同的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15569571/