前言
再次从头开始,认识二分查找。
基本模型
mid=low+(key- a[low])/(a[high]-a[low])*(high-low)
这是二分查找的基本模型,并不局限于“二”分查找,只要是依照固定比例、对有序序列进行检索的操作,我们都可以按照这个基本模型推写出代码逻辑出来。
二分查找的循环与递归写法
循环写法
def binarySearch(array, low,high, target) :
while low <= high:
mid = ( low + high)// 2
if array [mid] == target:
return mid
elif array [mid] > target:
high = mid - 1
else:
low = mid + 1
return -1
递归写法
def binarySearch1(array, low, high, target):
if low <= high :
mid = low + ((high - low)>>1)
if array[mid] == target:
return mid
elif array[mid] > target:
return binarySearch1(array, low, mid - 1, target)
else:
return binarySearch1(array, mid + 1, high, target)
return -1