Ищите элемент в "куче"

'all|everything|universe' => $all

должно быть

'all|everything|universe' => \$all
28
задан Brian Tompsett - 汤莱恩 8 November 2015 в 22:47
поделиться

3 ответа

Вам необходимо просмотреть каждый элемент в куче, чтобы определить, находится ли элемент внутри.

Однако возможна одна оптимизация (здесь мы предполагаем максимальную кучу). Если вы достигли узла с меньшим значением, чем искомый элемент, вам не нужно искать дальше от этого узла. Однако даже с этой оптимизацией поиск по-прежнему O (N) (необходимо проверять в среднем N / 2 узлов).

50
ответ дан 28 November 2019 в 03:11
поделиться

Я думаю, что вы ищете BST (дерево двоичного поиска).

1
ответ дан zarkon 28 November 2019 в 03:11
поделиться

Добавление индекса к значениям "кучи" может решить эту проблему. В Python это может быть сделано с помощью словаря. обновите индекс узла в словаре каждый раз, когда Вы выполняете операцию в минимальной "куче".

необходимо только реализовать это, если длина минимальной "кучи" огромна, и Вы хотите искать в минимальной "куче" много раз. Это потребует, чтобы некоторые по голове кодировали для отслеживания индекса, но это увеличит скорость программы по крайней мере на 50 - 60%.

0
ответ дан 28 November 2019 в 03:11
поделиться