- Jump search
In
computer science , a jump search or block search refers to asearch 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 thesearch key . To find the exact position of the search key in the list alinear search is performed on thesublist "L" [("k"-1)"m", "km"] .The optimal value of "m" is √"n", where "n" is the length of the list "L". Because both steps of the
algorithm look at, at most, √"n" items the algorithm runs in O(√"n") time. This is better than alinear search , but worse than abinary 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 a 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 . For an "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 JumpSeach 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
ee also
*
Jump list
*Interpolation search
*Linear search - runs in O("n") time, only looks forward
*Binary search - runs in O(log "n") time, looks both forward and backwardReferences
*
*Ben Shneiderman , "Jump Searching: A Fast Sequential Search Technique", CACM, 21(10):831-834, October 1978.
Wikimedia Foundation. 2010.