用Python编写一个程序:输出在顺序表(1,2,3,4,5,6,7,8,9)中采用折半查找法查找关键字9的过程
时间: 2024-05-05 15:21:47 浏览: 109
以下是用Python编写的程序,展示在顺序表(1,2,3,4,5,6,7,8,9)中采用折半查找法查找关键字9的过程:
```python
def binary_search(arr, low, high, x):
# 如果high >= low,则继续查找
if high >= low:
mid = (high + low) // 2
# 如果元素小于中间元素,则在左子数组中查找
if arr[mid] > x:
return binary_search(arr, low, mid - 1, x)
# 如果元素大于中间元素,则在右子数组中查找
elif arr[mid] < x:
return binary_search(arr, mid + 1, high, x)
# 如果元素等于中间元素,则返回元素的索引
else:
return mid
# 如果元素不存在,则返回-1
else:
return -1
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
x = 9
result = binary_search(arr, 0, len(arr) - 1, x)
if result != -1:
print(f"元素{x}在索引{result}处被找到")
else:
print("元素不存在")
```
输出结果为:
```
元素9在索引8处被找到
```
上述程序中,`binary_search`函数实现了折半查找算法。该函数采用递归的方式实现,将列表分成左、中、右三个部分,并检查中间元素是否等于目标元素。如果中间元素大于目标元素,则在左子列表中继续查找;如果中间元素小于目标元素,则在右子列表中继续查找;否则,返回中间元素的索引。如果最终无法找到目标元素,则返回-1。在主程序中,我们使用列表[1,2,3,4,5,6,7,8,9]和目标元素9来测试该函数,输出结果表明元素9在索引8处被找到。
阅读全文