Сложность времени сортировки сортировки

Я беру курс алгоритмов, и там я увидел, что временная сложность подсчета сортировки - это O (n + k), где k - диапазон чисел, а n - размер ввода. Мой вопрос: когда разница между k и n слишком велика, например, когда k = O (n 2) или O (n 3), можно сказать, что сложность O (n 2) или O (n 3)? Тогда в этом случае подсчет сортировки не является разумным подходом, и мы можем использовать сортировку слияния. Я прав?

Ответ 1

Да, вы абсолютно правы по всем пунктам.

Кроме того, мы можем сделать более сильные утверждения: когда k = O (n 2) или O (n 3), можно сказать, что сложность сортировки Θ (n 2) или Θ (n 3).

Ответ 2

Вы можете сортировать в O (n) время, теоретически. Если диапазон значений составляет от 1 до n 3 то преобразуется в base n и выполняет сортировку Radix. В базе n число имеет 3 цифры, поэтому ваше время выполнения - O (3n + 3n) + O (n) для базового преобразования. Общий O (n).