📅  最后修改于: 2023-12-03 15:19:34.506000             🧑  作者: Mango
二分查找,又称折半查找,是一种在有序数组中查找某一特定元素的搜索算法。
二分法的基本思路是将一个有序序列分成两个子序列,找到中间元素,如果中间元素等于目标元素,就返回,否则如果中间元素大于目标元素,则在左侧子序列中递归查找,否则在右侧子序列中递归查找。
二分法主要适用于:
有序数组
所查找的元素数量比较大
插入、删除操作比较少
数据存储量比较大,比如数据库等
以下是Python中二分查找的实现:
def binary_search(arr, target):
low, high = 0, len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] > target:
high = mid - 1
else:
low = mid + 1
return -1
以上代码实现了一个简单的二分查找算法,其中 arr
表示有序数组, target
表示要查找的目标元素,算法返回目标元素的下标或者 -1 表示未找到。
二分查找的时间复杂度为 O(log n) ,空间复杂度为 O(1)。
其优点是比较快速、简便、稳定,缺点是需要额外的空间用于存储有序数组以及复杂度较高。
二分查找是一种十分实用的算法,特别适用于有序数据中查找某一特定元素,可以提高查找效率。
在使用二分查找时,需要注意以下几点:
数组必须是有序的
数据量较大时才有优势
需要额外的空间存储有序数组
插入、删除操作比较少
能够提高程序效率