用Python写一个二分查找
时间: 2024-04-10 11:07:41 浏览: 17
二分查找是一种在有序列表中查找某一特定元素的搜索算法。下面是一个 Python 代码示例:
```
def binary_search(list, item):
low = 0
high = len(list) - 1
while low <= high:
mid = (low + high) // 2
guess = list[mid]
if guess == item:
return mid
elif guess > item:
high = mid - 1
else:
low = mid + 1
return None
my_list = [1, 3, 5, 7, 9]
print(binary_search(my_list, 3)) # Output: 1
print(binary_search(my_list, -1)) # Output: None
```
该代码定义了一个名为 `binary_search` 的函数,它接收一个有序列表和要查找的元素作为参数。函数使用一个循环来查找元素,每次将列表的中间元素与要查找的元素进行比较。如果找到了该元素,则返回它在列表中的索引。否则,如果中间元素大于要查找的元素,则在列表的左半部分继续查找;如果中间元素小于要查找的元素,则在列表的右半部分继续查找。如果列表中没有该元素,则返回 `None`。
相关问题
用python写一个二分查找
当然可以,以下是 Python 实现的二分查找代码:
```python
def binary_search(arr, target):
left, right = 0, 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 # 如果target不存在于arr中,则返回-1
```
其中,arr 是一个已经排好序的列表,target 是我们要查找的元素。函数返回 target 在 arr 中的下标,如果 target 不存在则返回 -1。
用python写一个二分查找算法
好的,以下是用 Python 写的二分查找算法:
```python
def binary_search(arr, target):
left, right = 0, 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。
希望这个算法能够帮到你!
阅读全文