In
computer science
Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to Applied science, practical discipli ...
, a jump search or block search refers to a
search algorithm for
ordered lists. It works by first checking all items ''L''
''km'', where
and ''m'' is the block size, until an item is found that is larger than the
search key
Searching or search may refer to:
Computing technology
* Search algorithm, including keyword search
** :Search algorithms
* Search and optimization for problem solving in artificial intelligence
* Search engine technology, software for findin ...
. To find the exact position of the search key in the list a
linear search
In computer science, a linear search or sequential search is a method for finding an element within a list. It sequentially checks each element of the list until a match is found or the whole list has been searched.
A linear search runs in at ...
is performed on the
sublist ''L''
''k''-1)''m'', ''km''/sub>.
The optimal value of ''m'' is , where ''n'' is the length of the list ''L''. Because both steps of the algorithm
In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algorithms are used as specificat ...
look at, at most, items the algorithm runs in O() time. This is better than a linear search
In computer science, a linear search or sequential search is a method for finding an element within a list. It sequentially checks each element of the list until a match is found or the whole list has been searched.
A linear search runs in at ...
, but worse than a binary search. The advantage over the latter is that a jump search only needs to jump backwards once, while a binary can jump backwards up to log ''n'' times. This can be important if jumping backwards takes significantly more time than jumping forward.
The algorithm can be modified by performing multiple levels of jump search on the sublists, before finally performing the linear search
In computer science, a linear search or sequential search is a method for finding an element within a list. It sequentially checks each element of the list until a match is found or the whole list has been searched.
A linear search runs in at ...
. For a ''k''-level jump search the optimum block size ''m''''l'' for the ''l'' th level (counting from 1) is ''n''(k-l)/k. The modified algorithm will perform ''k'' backward jumps and runs in O(''kn''1/(''k''+1)) time.
Implementation
algorithm JumpSearch is
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 ''L''min(''b'',''n'')-1 < ''s'' do
''a'' ← ''b''
''b'' ← ''b'' + ⌊√''n''⌋
if ''a'' ≥ ''n'' then
return nothing
while ''L''''a'' < ''s'' do
''a'' ← ''a'' + 1
if ''a'' = min(''b'', ''n'')
return nothing
if ''L''''a'' = ''s'' then
return ''a''
else
return nothing
See also
* Skip list
* Interpolation search
* Linear search
In computer science, a linear search or sequential search is a method for finding an element within a list. It sequentially checks each element of the list until a match is found or the whole list has been searched.
A linear search runs in at ...
- runs in O(''n'') time, only looks forward
* Binary search - runs in O(log ''n'') time, looks both forward and backward
References
* {{DADS, jump search, jumpsearch
* Ben Shneiderman, ''Jump Searching: A Fast Sequential Search Technique'', CACM, 21(10):831-834, October 1978.
Search algorithms