1.9 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			1.9 KiB
		
	
	
	
	
	
	
	
title, localeTitle
| 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 / космос
