## 注意:二分查找只针对于有序的数组进行查找
二分查找的时间复杂度为O(logn)#实现二分查找算法,ele 表示要查找的目标元素,[p,q] 指定查找区域
def binary_search(arr,p,q,ele):
#如果[p,q] 不存在,返回 -1
if p > q:
return -1
#找到中间元素所在的位置
mid = p + int( (q - p) / 2 )
#递归的出口
if ele == arr[mid]:
return mid
#比较 ele 和 arr[mid] 的值,缩小 ele 可能存在的区域
if ele < arr[mid]:
return binary_search(arr,p,mid-1,ele)
else:
return binary_search(arr,mid+1,q,ele)
arr = [10, 14, 19, 26, 27, 31, 33, 35, 42, 44]
#输出二叉查找元素 31 所在位置的下标
add = binary_search(arr, 0, 9, 31);
print(add)
输出结果:
>>5
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)