请用Python语言写一份执行二分查找的代码
时间: 2023-07-19 07:21:46 浏览: 75
好的,以下是一个简单的二分查找实现的 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` 表示要查找的目标元素。在函数中,我们首先定义 `left` 和 `right` 分别表示数组的左右边界。然后,我们每次取数组的中间元素 `mid`,如果 `arr[mid]` 等于目标元素 `target`,则直接返回 `mid`;如果 `arr[mid]` 小于 `target`,则说明目标元素在 `mid` 的右侧,因此更新 `left` 值;如果 `arr[mid]` 大于 `target`,则说明目标元素在 `mid` 的左侧,因此更新 `right` 值。如果最终无法找到目标元素,则返回 `-1` 表示查找失败。
相关问题
二分查找排序算法份文件编写
以下是一个使用二分查找算法进行排序的示例:
```python
def binary_search_sort(arr n = len(arr)
for i in(1, n):
# 使用二分查找到插入位置
left, right 0, i - 1
while <= right:
mid = (left + right) // 2
if arr[mid] > arr[i]:
right = mid - 1
else:
left = mid + 1
#当前元素插入到正确的位置
temp = arr[i]
for j in range, left, -1):
arr[j] = arr[j - 1]
arr[left] = temp
return arr
```
这段代码实现了二分查找排序算法,它会历数组 `arr` 中的每个元素,并使用二分查找找到当前元素在已排序部分的插入位置,然后当前元素插入到正确的位置。最后返回排序后的数组。
请注意,这只是一个简单的示例实现,可能不适用于所有情况。在实际应用中,你可能需要据具体需求进行修改和优化。
在数组A中折半查找关键字key。若找到,啧返回key在表中的位置,否则为0,写一份代码
折半查找也称为二分查找算法,通常适用于有序数组。以下是使用Python语言编写的一个简单版本的二分查找函数,它会在给定的数组`A`中寻找关键字`key`:
```python
def binary_search(A, key):
low = 0
high = len(A) - 1
while low <= high:
mid = (low + high) // 2
# 如果中间元素等于目标键,直接返回其索引
if A[mid] == key:
return mid
# 如果中间元素大于目标键,搜索左半部分
elif A[mid] > key:
high = mid - 1
# 如果中间元素小于目标键,搜索右半部分
else:
low = mid + 1
# 如果没找到,返回0
return 0
# 使用示例
A = [1, 3, 5, 7, 9]
key = 5
position = binary_search(A, key)
if position != 0:
print(f"找到了,键{key}的位置是 {position}")
else:
print("没有找到")
阅读全文