python实现二分查找的两种方式
二分查找:时间复杂度:O(logn)
使用这种方法的必须是 按关键字大小 有序排列的 顺序存储结构。
这里使用升序排列的数组
class BinarySearch:
# 非递归
def binarysearch1(self, arr, x, l, r):
# 循环直到找到或是确认没有为止
while True:
# 右边界大于等于左边界时执行
if r >= l:
# 索引中间值,需要保证为int
mid = int(l + (r - l) / 2)
# 若刚好等于中间值
if x == arr[mid]:
return mid
# 落在右边
elif x > arr[mid]:
l = mid + 1
# 落在左边