| @ -0,0 +1,39 @@ | |||||
| 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)) | |||||