Несколько ответов в основном верны, даже если они не похожи на это. Подход хеш-таблицы (для одного примера) имеет верхний предел, основанный на диапазоне задействованного типа , а не на количестве элементов в массивах. По крайней мере, по большинству определений это делает (верхний предел) пространство постоянным, хотя константа может быть довольно большой.
Теоретически вы можете изменить это с верхнего предела на истинное постоянное количество пространства. Например, если вы работали на C или C ++, и это был массив char
, вы могли бы использовать что-то вроде:
size_t counts[UCHAR_MAX];
Поскольку UCHAR_MAX является константой, объем пространства, используемого массивом, также является константой.
Edit: я бы отметил для записи, что ограничение на диапазоны / размеры участвующих предметов подразумевается почти в всех описаниях алгоритмической сложности. Например, мы все «знаем», что быстрая сортировка является алгоритмом O (N log N). Это верно только в том случае, если мы предположим, что сравнение и обмен отсортированных элементов занимает постоянное время, что может быть правдой, только если мы ограничим диапазон. Если диапазон задействованных элементов достаточно велик, чтобы мы больше не могли рассматривать сравнение или обмен как постоянное время, то его сложность стала бы чем-то вроде O (N log N log R), где R - диапазон, поэтому log R
приблизительно соответствует количеству битов, необходимых для представления элемента.