1. without recursion:
arr = [1,2,3,4,5,6,7,8,9,10,11]
def fun(arr, k):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) / 2
if k < arr[mid]:
right = mid -1
elif k > arr[mid]:
left = mid + 1
else:
return mid
if left > right:
return 'not found'
print fun(arr, 12)
2. with recursion:
arr = [1,2,3,4,5,6,7,8,9,10,11]
def fun(arr, k):
left = 0
right = len(arr)-1
return fun_1(arr, k, left, right)
def fun_1(arr, k, left, right):
if left > right:
#print -1
return -1
mid = (left + right) / 2
if arr[mid] == k:
#print mid
return mid
else:
if arr[mid] < k:
left = mid + 1
else:
right = mid -1
return fun_1(arr, k, left, right)
print fun(arr, 8)