这里是场景描述。
我有一个整数数组 A,数组的大小不固定。我需要编写的函数可能会被调用多次,每次传入的整数数量不同,有时可能只有几个,有时甚至可能包含成千上万个整数。此外,每个整数的位数也不必相同。
我需要将数组中的数字“排序”,使得结果数组中的整数按字典顺序排列(即基于它们的字符串表示进行排序。例如,"123" 是 123 的字符串表示)。请注意,输出应仅包含整数,而不是它们的字符串等效项。
例如:如果输入为:
[12 | 2434 | 23 | 1 | 654 | 222 | 56 | 100000]
则输出应为:
[1 | 100000 | 12 | 222 | 23 | 2434 | 56 | 654]
我的初始思路:我将每个整数转换为其字符串格式,然后添加右侧的零以使所有整数包含相同的位数(这是一步很麻烦的操作,因为它涉及跟踪等内容,使得解决方案非常低效),然后进行基数排序。
最后,我删除了填充的零,将字符串转换回它们的整数形式,并将它们放入结果数组中。这是一种非常低效的解决方案。
我听说这个问题并不需要填充等操作,而且有一种简单的方法可以处理数字(某些位运算?)以获得结果。
您能想到的在空间效率和时间效率上最高效的解决方案是什么?
如果您要提供代码,我更喜欢 Java 或伪代码。但如果不适合您,请使用任何编程语言都可以。