|
|
- import math
-
- def jumpSearch( arr , x ):
- # Finding block size to be jumped
- n = len(arr)
- step = math.sqrt(n)
-
- # Finding the block where element is
- # present (if it is present)
- prev = 0
- while arr[int(min(step, n)-1)] < x:
- prev = step
- step += math.sqrt(n)
- if prev >= n:
- return -1
-
- # Doing a linear search for x in
- # block beginning with prev.
- while arr[int(prev)] < x:
- prev += 1
-
- # If we reached next block or end
- # of array, element is not present.
- if prev == min(step, n):
- return -1
-
- # If element is found
- if arr[int(prev)] == x:
- return int(prev)
-
- return -1
-
-
- arr = [ 0, 1, 3, 4, 4, 5, 8, 13, 22, 24, 55, 59, 122, 213, 422, 555 ]
- x = 55
-
- index = jumpSearch(arr, x)
- print("Number is at index {}".format(index))
-
|