
孙老师为您分享以下优质知识
二进制查找(Binary Search)是一种高效的查找算法,适用于 有序数据集,通过不断将搜索范围减半来快速定位目标元素。以下是具体实现步骤和关键要点:
一、核心思想
分而治之:每次比较中间元素与目标值,根据大小关系缩小搜索范围(左半部分或右半部分),从而将时间复杂度从线性搜索的O(n)降低到O(log n)。
前提条件:数据必须预先排序。
二、具体步骤
设定搜索区间的起始值`low`(通常为0)和结束值`high`(数组长度减1)。
循环查找
当`low`小于等于`high`时,执行以下操作:
- 计算中间位置`mid = (low + high) / 2`(注意整数除法)。
- 比较`array[mid]`与目标值`key`:
- 若相等,查找成功,返回`mid`。
- 若`array[mid]`大于`key`,则目标值在左半部分,更新`high = mid - 1`。
- 若`array[mid]`小于`key`,则目标值在右半部分,更新`low = mid + 1`。
结束条件
当`low`超过`high`时,表示目标值不存在于数组中,查找失败。
三、示例分析
以数组`[1, 3, 5, 7, 9]`查找目标值`5`为例:
第一次比较:`mid = 2`(值为5),相等,查找成功。
若目标值为`6`:
第一次比较:`mid = 2`(值为5),小于6,更新`low = 3`。
第二次比较:`mid = 3`(值为7),大于6,更新`high = 2`。
搜索范围缩小至空,查找失败。
四、代码实现(C语言)
```c
include
int BinarySearch(int array[], int n, int key) {
int low = 0, high = n - 1;
while (low