折半查找程序
时间: 2023-12-14 18:38:03 浏览: 32
以下是一个简单的折半查找程序的示例,使用 Python 语言实现:
```python
def binary_search(arr, target):
low = 0
high = len(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
```
该函数接受两个参数:一个已排序的数组和要查找的目标值。它使用 `low` 和 `high` 变量来跟踪当前搜索范围的边界,然后在循环中计算中间索引 `mid`。如果 `arr[mid]` 等于目标值,则该函数返回 `mid`。如果 `arr[mid]` 小于目标值,则更新 `low` 以排除左半部分。如果 `arr[mid]` 大于目标值,则更新 `high` 以排除右半部分。如果没有找到目标值,则返回 -1。
以下是一个示例用法:
```python
arr = [1, 3, 5, 7, 9]
target = 7
result = binary_search(arr, target)
if result != -1:
print("元素在索引 %d" % result)
else:
print("元素不在数组中")
```
输出:
```
元素在索引 3
```
注意,折半查找算法只适用于已排序的数组。如果数组未排序,则需要先对其进行排序,然后再执行折半查找。