Я беру курс алгоритмов, и там я увидел, что временная сложность подсчета сортировки - это 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).