Это зависит от того, является ли k константой или нет.
Если у ваших чисел есть k цифр, то у вас есть ограничение на числа, поскольку они не могут быть больше 10 * 1003. * k - 1. Поэтому вы можете использовать radix sort для сортировки целых чисел. Время выполнения сортировки по основанию - O ((n + b) log b U), где n - число сортируемых чисел, b - основа вашей сортировки по основанию, а U - максимальное значение, которое ты сортируешь В вашем случае это работает как
O ((n + b) log b 10 k ) = O (k (n + b) ).
Вот тут и появляется «все зависит». Если k - это какое-то фиксированное число, которое никогда не меняется - скажем, всегда 137 или что-то в этом роде - тогда приведенное выше выражение сводится к O ( n + b) и выбор b как любой постоянной (скажем, base-2 для вашей сортировки по основанию) дает время выполнения O (n). С другой стороны, если k может изменяться (скажем, числа могут быть такими большими, как вы хотели бы, чтобы они были, а затем, посмотрев числа, вы определите, что такое k), тогда приведенное выше выражение не может быть упрощенным за пределы O (kn), потому что k является параметром алгоритма.
Надеюсь, это поможет!