首页 > 解决方案 > 二进制搜索代码不断给出超出范围错误

问题描述

对于二进制搜索,我一直遇到一个错误,即我的代码中的索引:“mid”,一直超出范围。有没有什么办法解决这一问题?代码:

def binary_search(num, key):
  low = 0
  high = len(num)
  while high >= low:
    mid = (low + high)//2
    if num[mid] < key:
      low = mid + 1
    elif num[mid] > key:
      low = mid + 1
    else:
      return mid
  return -1
A = [2, 4, 7, 10, 11, 32, 45, 87, 90]
print(binary_search(A, 10))

标签: pythonbinary-search

解决方案


你的条件搞砸了

def binary_search(num, key):
  low = 0
  high = len(num)
  while high >= low:
    mid = (low + high)//2
    if num[mid] < key:
      low = mid + 1
    elif num[mid] > key:
      high = mid - 1
    else:
      return mid
  return -1
A = [2, 4, 7, 10, 11, 32, 45, 87, 90]
print(binary_search(A, 10))

*在 elif 内


推荐阅读