用总位数对数字数组进行排序

2 arrays sorting algorithm

给定一个自然数数组,每个数可以是不同位数,但保证所有数加在一起的总位数是m

例如,如果一个三个数字:

2,3,1081 then m = 6.
Run Code Online (Sandbox Code Playgroud)

我需要对数组中的数字进行排序的算法O(m)

我尝试过基数排序,但对我没有好处。

ami*_*mit 5

基数排序绝对可以解决这个问题O(m)。从最低有效位开始进行基数排序,并迭代地向最高有效位移动。

每当您遇到“不存在的数字”(例如,数字“5”的第二次迭代)时,将其视为 -1 - 因此它将是此迭代生成的数组中的第一个。

在每一轮“回合”之后,减少数组大小并“修剪”您刚刚传递的所有数字(在本次迭代中您只是将其视为“-1”)。

这需要精确检查每个元素中的每个数字一次,此外 - 对于每个元素,当您将其视为 -1 时检查一次。
这给了你O(m+n)复杂性,因为n<m- 这是O(m)