stringtranslate.com

Перейти к поиску

В информатике поиск с переходом или блочный поиск относится к алгоритму поиска для упорядоченных списков . Он работает, сначала проверяя все элементы L km , где m размер блока, пока не будет найден элемент, который больше ключа поиска. Чтобы найти точное положение ключа поиска в списке, выполняется линейный поиск по подсписку L [( k -1) m , km ] .

Оптимальное значение m равно n , где n — длина списка L . Поскольку оба шага алгоритма просматривают максимум n элементов, алгоритм выполняется за время O( n ). Это лучше, чем линейный поиск , но хуже, чем двоичный поиск . Преимущество перед последним заключается в том, что поиск с переходом должен перейти назад только один раз, в то время как двоичный поиск может перейти назад до log n раз. Это может быть важно, если переход назад занимает значительно больше времени, чем переход вперед.

Алгоритм можно модифицировать, выполняя несколько уровней поиска скачков в подсписках, прежде чем, наконец, выполнить линейный поиск . Для поиска скачков на k -м уровне оптимальный размер блока m l для l -го уровня (начиная с 1) равен n (kl)/k . Модифицированный алгоритм выполнит k обратных скачков и будет работать за время O( kn 1/( k +1) ).

Выполнение

Алгоритм JumpSearch принимает  на вход: упорядоченный список L , его длину n и ключ поиска s . Выход: позиция s в L или ничего , если s отсутствует в L.  а ← 0 б ← ⌊√ н  в то время как  L min( b , n )-1 < s  do  ab  bb + ⌊√ nесли  an  то  ничего не возвращать   в то время как  L a < s  do  aa + 1 if  a = min( b , n ) вернуть  ничего  если  L a = s  , то  вернуть  a  , иначе  ничего не вернуть 

Смотрите также

Ссылки