二分查找算法详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二分查找算法详解
二分查找算法(Binary Search Algorithm),也称为折半查找,是一种高效的查找算法。

二分查找只适用于有序数组,每次都将待查找的区间折半,将查找的时间复杂度降低到O(log n)。

下面是二分查找的详细步骤:
1. 初始化左右指针,left=0,right=n-1,其中n表示待查找数组的元素个数。

2. 计算出数组的中间位置mid,mid=(left+right)/2。

3. 比较待查找值target与数组中间位置mid的值的大小关系,如果target 等于nums[mid],则直接返回mid;如果target小于nums[mid],则在[left,mid-1]的范围内寻找,否则在[mid+1,right]的范围内寻找。

4. 再次计算中间位置mid,重复第3步操作,直到左指针left大于右指针right。

5. 如果没有找到目标值target,返回-1。

二分查找算法的时间复杂度为O(log n),其中n为有序数组的元素个数。

在插入和删除操作较少,且必须有序的情况下,可以使用二分查找优化搜索效率。

下面是一段使用Python实现的二分查找算法的代码:
```python
def binary_search(nums, target):
left, right = 0, len(nums) - 1 # 初始化左右指针
while left <= right:
mid = (left + right) // 2 # 计算中间位置
if nums[mid] == target: # 如果找到目标值,返回索引
return mid
elif nums[mid] < target: # 如果目标值大于中间位置的值,在右侧继续查找
left = mid + 1
else: # 目标值小于中间位置的值,在左侧继续查找
right = mid - 1
return -1 # 如果没有找到目标值,返回-1
```
以上就是二分查找算法的详细步骤和一个Python实现的例子。

相关文档
最新文档