帮我写一个python二分查找
时间: 2023-04-10 21:01:56 浏览: 92
好的,以下是一个简单的 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的二分查找
当然可以,下面是一个简单的 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 编写的二分查找算法示例:
```python
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
guess = arr[mid]
if guess == target:
return mid
elif guess < target:
low = mid + 1
else:
high = mid - 1
return -1 # 如果找不到目标元素,则返回 -1
# 示例用法
arr = [1, 3, 5, 7, 9]
target = 3
result = binary_search(arr, target)
if result != -1:
print(f"目标元素 {target} 在数组中的索引位置为: {result}")
else:
print("目标元素未在数组中找到")
```
这是一个基本的二分查找算法。它首先设定一个搜索范围,然后在每一步中将搜索范围缩小一半,直到找到目标元素或确认目标元素不在数组中。在给定示例中,目标元素 `3` 在数组 `[1, 3, 5, 7, 9]` 中的索引位置为 `1`。