2013-03-21 2 views
-6

Я ищу алгоритм, который принимает O(1) время как для search and insertion.Есть ли какой-нибудь алгоритм, который принимает O (1) раз?

Есть ли доступный алгоритм? Является ли это возможным?

+6

Ум, хеш-стол? .. – dasblinkenlight

+1

Алгоритм делать ** что **? – angelatlarge

+0

Но время вставки в хеш-таблице равно O (n) в худшем случае. – mumair

ответ

1

Теоретически у вас есть вставка O (1) и поиск хэш-карты, предполагая, что хеш является совершенным, а время вычисления хэша - O (1).

+0

Если хэш-карта не будет переполнена данными, которые будут помещены в его структуру данных. – Vesper

-3

Невозможно. Чтение ключей, на которые вы вставляете, будет лучше O (log n), поскольку ключ должен быть представлен в двоичном формате. Таким образом, каждый раз, когда вы удваиваете размер, вам нужно добавить дополнительную двоичную цифру в ключ, и поэтому он не будет O (1). Не говоря уже о фактическом введении значения.

Если мы не говорим о квантовых вычислениях?

+0

Компьютеры читают слова 16 или 32 бита за раз. Ваша логика ускользает от меня. – EJP

+0

Или 64 бит. Что это связано с O (...)? –

+0

O (1) подразумевает постоянное количество времени для вставки в любую коллекцию размеров. Двойной размер коллекции, и он не влияет на время. Но каждый раз, когда я удваиваю размер коллекции, мне нужен более длинный ключ для представления элемента в коллекции. Для считывания ключа используется клавиша O (n), а ключ пропорционален log (m) количеству элементов в коллекции. –

Смежные вопросы