python 二分查找程序
时间: 2023-11-24 13:49:49 浏览: 81
Python二分查找程序是一种在有序列表中查找特定元素的算法。它通过将列表分成两半来减少搜索范围,然后确定目标元素在哪一半中,最终找到目标元素的位置。下面是一个Python二分查找程序的示例代码:
```python
def binary_search(lst, t):
low = 0
high = len(lst) - 1
while low <= high:
mid = (low + high) // 2
if lst[mid] < t:
low = mid + 1
elif lst[mid] > t:
high = mid - 1
else:
return mid
return -1
```
该函数接受两个参数:一个有序列表和要查找的目标元素。它使用while循环来不断缩小搜索范围,直到找到目标元素或确定目标元素不存在于列表中。如果找到目标元素,则返回其索引;否则返回-1。
相关问题
python编写程序,输入一个数字n,用二分查找法,查找n是否存在于列表[1,3,5,11,21,25,33,72,97,99]中。
下面是使用二分查找法在Python中查找数字n是否存在于给定的列表中的示例代码:
```python
def binary_search(arr, n):
"""
二分查找函数
:param arr: 有序列表
:param n: 待查找的元素
:return: 元素在列表中的位置,如果不存在则返回-1
"""
low, high = 0, len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == n:
return mid
elif arr[mid] < n:
low = mid + 1
else:
high = mid - 1
return -1
# 测试
arr = [1, 3, 5, 11, 21, 25, 33, 72, 97, 99]
n = int(input("请输入一个数字:"))
result = binary_search(arr, n)
if result == -1:
print("数字%d不存在于列表中" % n)
else:
print("数字%d存在于列表中,位置为%d" % (n, result))
```
运行示例:
```
请输入一个数字:11
数字11存在于列表中,位置为3
```
```
请输入一个数字:35
数字35不存在于列表中
```
编写一个Python程序,实现一个简单的二分查找算法,输入一个有序的整数数组和一个目标值,程序输出目标值在数组中的索引位置(若不存在则输出-1)
好的,以下是简单的Python程序实现二分查找算法:
```python
def binary_search(arr, target):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```
在这个程序中,`arr`表示输入的有序整数数组,`target`则表示目标值。程序使用了经典的二分查找算法,首先设定左右指针,然后在每次循环中计算中间位置并比较目标值与中间位置的值的大小关系,根据大小关系更新左右指针的位置。如果最终找到了目标值,则返回其在数组中的索引位置,否则返回-1表示目标值不存在于数组中。
你可以将上述代码复制到Python的交互式环境或者.py文件中运行,测试一下程序的正确性。
阅读全文