二分查找
二分查找 → 字典查词(便于记忆)
二分查找仅适用于顺序存储结构(如数组)的有序数据
·条件: 数据必须有序,升序或者降序都可以,允许相邻元素值相等(如翻字典时根据首字母快速定位)
核心特性:
1.时间复杂度:O(log n),显著优于线性查找(O(n))
2.静态数据更优:适合不频繁变动但需高频查找的有序数据集
3.空间限制:数据量过大可能导致连续内存不足(数组特性限制)
代码Python版:
def binary_search(arr,target):
left = 0 #左指针
right = len(arr)-1 #右指针
while left <= right: #主体循环,循环前提:左指针要小于右指针
mid = (left+right)//2 #找到中间指针位置
if arr[mid] == target: #如果中间指针正好为目标,则中间指针就为目标索引(条件1)
return mid
elif arr[mid] < target: #目标值在中指针右侧情况 (条件2)
left = mid + 1
else: #在左侧情况,即arr[mid] > target (条件3)
right = mid - 1
return -1 #三种情况都不满足则为查找失败,返回-1
#测试用例
数列必须有序必须有序!,如果为无序数列先试用sorted方法排序!!!
test_array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
print(binary_search(test_array, 10))
视频学习地址:点击此处

浙公网安备 33010602011771号