- 遇到数组的时候:
1.排序or not
2.数组中有无重复
3.有无负数
模板代码实现:
def binarysearch(alist, item):
if len(alist) == 0: #判断数组是否为空
return -1
left, right = 0, len(alist) - 1
while left + 1 < right:
mid = left + (right - left) // 2
if alist[mid] == item:
right = mid
elif alist[mid] < item:
left = mid
elif alist[mid] > item:
right = mid
if alist[left] == item:
return left
if alist[right] == item:
return right
return -1
网友评论