1.9 KiB
1.9 KiB
title | localeTitle |
---|---|
Jump Search | Прыжковый поиск |
Перейти к поиску
Прыжковый поиск обнаруживает элемент в отсортированном массиве, перескакивая k ячеек и затем проверяя, находится ли элемент между предыдущим значением и новым.
Сложность Худший случай
O (√N)
Работает
- Определите значение k, число прыжков: оптимальный размер перехода - √N, где N - длина массива
- Перейдите в массив k-by-k,
Array[i] < valueWanted < Array[i+k]
поиск по условиюArray[i] < valueWanted < Array[i+k]
- Сделайте линейный поиск между
Array[i]
иArray[i + k]
Код
Реализация алгоритма на псевдокоде:
Algorithm JumpSearch
Input: An ordered list L, its length n and a search key s.
Output: The position of s in L, or nothing if s is not in L.
a ← 0
b ← ⌊√n⌋
while Lmin(b,n)-1 < s do
a ← b
b ← b + ⌊√n⌋
if a ≥ n then
return nothing
while La < s do
a ← a + 1
if a = min(b,n)
return nothing
if La = s then
return a
else
return nothing
Чтобы просмотреть примеры реализации кода этого метода, перейдите по этой ссылке ниже:
Блочный поиск - OpenGenus / космос