python定义一个函数Binary_Search,实现二分查找,输入参数为列表search_list与待查找的数target,如果找到则输出其索引,未找到输出None。
时间: 2024-10-14 10:07:12 浏览: 14
在Python中,你可以定义一个名为`binary_search`的函数来实现二分查找算法。这是一种用于在有序列表中快速定位元素的有效搜索方法。以下是函数的实现:
```python
def binary_search(search_list, target):
left = 0
right = len(search_list) - 1
while left <= right:
mid = (left + right) // 2
if search_list[mid] == target:
return mid # 找到目标,返回其索引
elif search_list[mid] < target:
left = mid + 1 # 目标大于中间值,缩小左边界
else:
right = mid - 1 # 目标小于中间值,缩小右边界
return None # 没有找到目标,返回None
# 示例
numbers = [1, 3, 5, 7, 9]
print(binary_search(numbers, 5)) # 输出:2
print(binary_search(numbers, 4)) # 输出:None
```
相关问题
用python定义一个函数Binary_Search,实现二分查找,输入参数为列表search_list与待查找的数target,如果找到则输出其索引,未找到输出None。
在Python中,你可以定义一个名为`binary_search`的函数,采用经典的二分查找算法来寻找目标值在排序列表中的位置。以下是一个简单的实现:
```python
def binary_search(search_list, target):
def partition(lst, low, high):
pivot = lst[high] # 将最后一个元素作为基准
i = low - 1 # 初始化较小元素的索引
for j in range(low, high):
if lst[j] <= pivot:
i += 1
lst[i], lst[j] = lst[j], lst[i] # 交换元素
lst[i + 1], lst[high] = lst[high], lst[i + 1] # 将基准放在正确的位置
return i + 1
low, high = 0, len(search_list) - 1
while low <= high:
mid = partition(search_list, low, high)
if search_list[mid] == target:
return mid
elif search_list[mid] < target:
low = mid + 1
else:
high = mid - 1
return None
# 示例
sorted_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
target = 5
result = binary_search(sorted_list, target)
if result is not None:
print(f"找到目标 {target},索引为 {result}")
else:
print(f"{target} 没有在列表中找到")
```
定义一个函数Binary_Search,实现二分查找,输入参数为列表search_list与待查找的数target,如果找到则输出其索引,未找到输出None
好的,下面是一个简单的Python函数 `binary_search` 实现二分查找算法:
```python
def binary_search(search_list, target):
left = 0
right = len(search_list) - 1
while left <= right:
mid = (left + right) // 2
if search_list[mid] == target:
return mid
elif search_list[mid] < target:
left = mid + 1
else:
right = mid - 1
# 如果没有找到目标,返回 None
return None
# 示例用法:
numbers = [1, 3, 5, 7, 9]
target = 5
result_index = binary_search(numbers, target)
if result_index is not None:
print(f"找到了,索引是 {result_index}")
else:
print("没找到")
```
这个函数首先初始化两个指针,分别指向列表的开始和结束。然后在一个循环中,它不断将搜索范围缩小到中间元素。如果中间元素等于目标值,就返回它的索引;如果中间元素小于目标值,就在右半部分继续查找;反之,在左半部分查找。如果没有找到目标值,最后返回 `None`。
阅读全文