2018-10-12 20:00:59 +00:00
---
title: Jump Search
2018-12-06 16:55:34 +00:00
localeTitle: Прыжковый поиск
2018-10-12 20:00:59 +00:00
---
## Перейти к поиску
2018-12-06 16:55:34 +00:00
Прыжковый поиск обнаруживает элемент в отсортированном массиве, перескакивая k ячеек и затем проверяя, находится ли элемент между предыдущим значением и новым.
2018-10-12 20:00:59 +00:00
# Сложность Худший случай
O (√N)
# Работает
1. Определите значение k, число прыжков: оптимальный размер перехода - √N, где N - длина массива
2. Перейдите в массив k-by-k, `Array[i] < valueWanted < Array[i+k]` поиск по условию `Array[i] < valueWanted < Array[i+k]`
3. Сделайте линейный поиск между `Array[i]` и `Array[i + k]`
![Прыжки с поиском 1 ](https://i1.wp.com/theoryofprogramming.com/wp-content/uploads/2016/11/jump-search-1.jpg?resize=676%2C290 )
# Код
2018-12-06 16:55:34 +00:00
Реализация алгоритма на псевдокоде:
```
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
```
2018-10-12 20:00:59 +00:00
Чтобы просмотреть примеры реализации кода этого метода, перейдите по этой ссылке ниже:
2018-12-06 16:55:34 +00:00
[Блочный поиск - OpenGenus / космос ](https://github.com/OpenGenus/cosmos/tree/master/code/search/jump_search )
2018-10-12 20:00:59 +00:00
2018-12-06 16:55:34 +00:00
# Источник
2018-10-12 20:00:59 +00:00
2018-12-06 16:55:34 +00:00
[Алгоритм ](http://theoryofprogramming.com/2016/11/10/jump-search-algorithm/ )