Вот сценарий.
Мне присваивается массив "A" целых чисел. Размер массива не фиксирован. Функция, которую я должен написать, может быть вызвана один раз с массивом из нескольких целых чисел, а в другое время может содержать тысячи целых чисел. Кроме того, каждое целое число не должно содержать одинакового количества цифр.
Я должен "сортировать" числа в массиве, так что результирующий массив имеет целые числа, упорядоченные в лексикографическом виде (т.е. они сортируются на основе их строковых представлений. Здесь "123" представляет собой строковое представление 123), Обратите внимание, что вывод должен содержать только целые числа, а не их эквиваленты строк.
Например:, если вход:
[12 | 2434 | 23 | 1 | 654 | 222 | 56 | 100000]
Тогда вывод должен быть:
[1 | 100000 | 12 | 222 | 23 | 2434 | 56 | 654]
Мой первоначальный подход: Я преобразовал каждое целое число в его строковый формат, а затем добавил нули вправо, чтобы все целые числа содержали одинаковое количество цифр (это был грязный шаг, поскольку он включал отслеживание и т.д., что делает решение очень неэффективным), а затем сделал сортировку radix. Наконец, я удалил заполненные нули, преобразовал строки обратно в свои целые числа и поместил их в результирующий массив. Это было очень неэффективное решение.
Мне повезло, что решение не нуждается в дополнении и т.д., и есть простое решение, в котором вам просто нужно обрабатывать номера в некотором роде (некоторая обработка бит?), чтобы получить результат.
Каково наиболее эффективное решение пространства, о котором вы можете думать? Время-накрест?
Если вы даете код, я бы предпочел Java или псевдокод. Но если это вас не устраивает, любой такой язык должен быть в порядке.