def binary_search(lis, left, right, num):
# 递归实现,查找并返回位置
if left > right: # 递归结束条件
return -1
mid = (left + right) // 2
if num < lis[mid]:
right = mid - 1
elif num > lis[mid]:
left = mid + 1
else:
return mid
return binary_search(lis, left, right, num)
def binarysearch(list, left, right, num):
#非递归实现
while left<=right:
mid = (left+right)//2
if list[mid]==num:
return mid
elif list[mid]<num:
left = mid+1
elif list[mid]>num:
right=mid-1
return -1
if __name__ == '__main__':
list = [12,13,22,44,45]
# 返回的位置从0开始计算
print(binary_search(list,0,len(list)-1,45))
print(binary_search(list, 0, len(list) - 1, 12))
print(binary_search(list, 0, len(list) - 1, 44))
print(binary_search(list, 0, len(list) - 1, 1))
print(binarysearch(list, 0, len(list)-1, 12))
print(binarysearch(list, 0, len(list)-1, 13))
print(binarysearch(list, 0, len(list)-1, 22))
print(binarysearch(list, 0, len(list)-1, 44))
print(binarysearch(list, 0, len(list)-1, 1))
python数据结构之二分查找
最新推荐文章于 2021-08-30 17:14:49 发布