Вы говорите об этом http://en.wikipedia.org/wiki/Counting_sort, который имеет временную сложность O (n + k)?
Вы должны помнить, что временная сложность определяется для идеализированной машины, которая неимеет кеши, ограничения по ресурсам и не зависит от того, как конкретный язык или машина могут на самом деле работать.
Сложность времени все еще O(n + k)
Однако в реальной машине инициализация можетгораздо эффективнее, чем приращения, поэтому n
и k
напрямую не сопоставимы.Шаблон для инициализации подобен последовательному и очень эффективному (n
).Например, если счет имеет тип int
, ЦП может использовать long
или 128-битные регистры для выполнения инициализации.
Схема доступа для подсчета, вероятно, будет относительно случайной и для большихзначения k
могут быть намного медленнее.(до 10 раз медленнее)