你能帮我写一个python的二分查找
时间: 2024-05-10 12:20:27 浏览: 7
当然可以,下面是一个简单的 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
```
这个函数接受两个参数,一个是要查找的数组,另一个是目标值。它使用 `left` 和 `right` 指针来跟踪要查找的数组中的范围,并在每次迭代期间将它们调整为更小的范围。如果中间值等于目标值,函数返回该值的索引。如果中间值小于目标值,则将左指针移到中间值的右侧。如果中间值大于目标值,则将右指针移到中间值的左侧。如果未找到目标值,则返回 -1。
例如,我们可以使用这个函数来查找数字 8 在一个已排序的数组中:
```python
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
target = 8
result = binary_search(arr, target)
print(result) # 输出: 7
```
这将输出 7,因为数字 8 在数组中的索引位置为 7。
相关问题
帮我写一个python二分查找
好的,以下是一个简单的 Python 二分查找的代码示例:
def binary_search(arr, x):
low = 0
high = len(arr) - 1
mid = 0
while low <= high:
mid = (high + low) // 2
if arr[mid] < x:
low = mid + 1
elif arr[mid] > x:
high = mid - 1
else:
return mid
return -1
你可以将要查找的数组和要查找的元素作为参数传递给这个函数,它将返回元素的索引(如果找到)或 -1(如果未找到)。
你能够帮我写一个二分查找算法吗
?当然可以,这是一个常见的算法,下面是一个示例的二分查找算法的代码:
```python
def binary_search(array, item):
left = 0
right = len(array) - 1
while left <= right:
mid = (left + right) // 2
if array[mid] == item:
return mid
elif array[mid] < item:
left = mid + 1
else:
right = mid - 1
return None
```
这个算法的时间复杂度是 O(log n),其中 n 是数组的长度。