二分查找,升序数组,有1000000个数,查找,如果存在多个就输出编号最小的,不存在就输出None
时间: 2024-01-12 17:04:58 浏览: 93
二分查找
好的,针对您的问题,我可以给出以下的 Python 代码示例来实现二分查找:
```python
def binary_search(arr, target):
left, right = 0, len(arr) - 1
result = None
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
result = mid
right = mid - 1
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return result
# 示例数组
arr = [i for i in range(1, 1000001)]
# 要查找的目标值
target = 999999
# 进行二分查找
result = binary_search(arr, target)
# 输出结果
if result is None:
print("None")
else:
print(result)
```
在这个代码示例中,我们首先定义了一个名为 `binary_search` 的函数,这个函数将接收两个参数:一个升序数组 `arr` 和要查找的目标值 `target`。在函数内部,我们使用了典型的二分查找算法来查找目标值所在的位置。同时,我们使用一个变量 `result` 来记录目标值的位置,如果发现目标值在数组中存在多个,我们只保留编号最小的一个。
最后,我们使用一个示例数组来进行测试,查找值为 `999999` 的元素所在的位置,并输出结果。如果找到了,我们将输出其编号,否则将输出 `None`。
阅读全文