好多算法题都需要用到二分查找,binary search的思路很简单,即在一个有序序列中不断将target值与序列中间位置值作比较,然后通过递归求得结果。
下面是一段将value值插入有序序列合适位置(使插入value后使序列仍然有序)的代码:
def binary_search(self, array, start, end, value):
if start > end:
return start
mid = int((end - start) >> 1) + start
if array[mid] == value:
return mid
elif array[mid] > value:
return self.binary_search(array, start, mid - 1, value)
else:
return self.binary_search(array, mid + 1, end, value)