已知有序数组int a[]={1,3,5,7,9,11,13}; 编写二分法查找程序。
时间: 2024-10-19 15:09:07 浏览: 24
二分查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。对于给定的有序整数数组 `a`,它的步骤如下:
1. 初始化两个指针,`low` 和 `high` 分别指向数组的第一个和最后一个元素。
2. 计算中间索引 `mid = (low + high) / 2`。
3. 检查中间元素 `a[mid]` 是否等于目标值。如果相等,返回中间索引;如果不等,则判断目标值是在左半部分还是右半部分:
- 如果目标值小于 `a[mid]`,说明目标在左半边,更新 `high = mid - 1`。
- 否则,目标在右半边,更新 `low = mid + 1`。
4. 重复上述过程,直到找到目标值或者 `low > high` 为止。如果 `low > high`,表示目标值不在数组中,返回 `-1` 或者 `Not Found`。
以下是这个查找程序的伪代码:
```python
function binarySearch(arr, target):
low = 0
high = length(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
```
在实际编程语言如Java中,你会看到类似这样的实现:
```java
public int binarySearch(int[] a, int target) {
int low = 0;
int high = a.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (a[mid] == target)
return mid;
else if (a[mid] < target)
low = mid + 1;
else
high = mid - 1;
}
return -1; // Target not found in the array
}
```
阅读全文