def search(arr, l, r, x):
|
|
if r >= l:
|
|
m = (l+r)/2
|
|
if arr[m] == x:
|
|
return m
|
|
|
|
if arr[m] > x:
|
|
return search(arr, l, m-1, x)
|
|
|
|
else:
|
|
return search(arr, m, r, x)
|
|
|
|
return -1
|
|
|
|
def exponentialSearch(arr, n, x):
|
|
|
|
if arr[0] == x:
|
|
return 0
|
|
|
|
i = 1
|
|
while i<n and arr[i] <=x:
|
|
i = i*2
|
|
|
|
return search(arr, i/2, min(n, i), x)
|
|
|
|
arr = [2, 3, 4, 7, 10, 40]
|
|
n = len(arr)
|
|
x = 10
|
|
r = exponentialSearch(arr, n, x)
|
|
if r == -1:
|
|
print "Element not found"
|
|
else:
|
|
print "Element is present at index %d" %(r)
|