给定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x,返回其在数组中的位置,如果未找到返回-1。写出二分搜索的算法
时间: 2024-09-26 20:06:12 浏览: 38
二分查找是一种高效的搜索算法,适用于有序数据集合。对于这个问题,可以使用以下步骤编写二分查找算法:
1. 初始化两个指针,`low` 和 `high` 分别表示数组的第一个元素(索引0)和最后一个元素(索引n-1)。
2. 当 `low` 小于等于 `high` 时,继续循环:
a. 计算中间索引 `mid` 为 `(low + high) // 2`。
b. 检查中间元素 `a[mid]` 是否等于目标值 `x`:
- 如果相等,返回 `mid`,因为找到了目标元素的位置。
- 如果 `a[mid]` 大于 `x`,说明目标可能在左半部分,更新 `high` 为 `mid - 1`。
- 否则,目标可能在右半部分,更新 `low` 为 `mid + 1`。
3. 如果在循环结束后仍未找到 `x`,返回 `-1` 表示元素不存在于数组中。
以下是伪代码形式的二分查找算法:
```python
function binarySearch(arr, x):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == x:
return mid
elif arr[mid] > x:
high = mid - 1
else:
low = mid + 1
return -1
```
阅读全文