二分查找算法详解:Python实现及示例
二分查找是一种非常高效的查找算法,它的时间复杂度为 O(log n)。以下是一个简单的二分查找算法的实现(使用 Python 语言):
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
# 测试代码
arr = [1, 3, 5, 7, 9]
target = 7
result = binary_search(arr, target)
if result != -1:
print(f'元素在数组中的索引为 {result}')
else:
print('元素不在数组中')
算法原理:
二分查找的基本思想是:
- 首先将目标值与数组中间元素进行比较。
- 如果目标值等于中间元素,则查找成功。
- 如果目标值小于中间元素,则在数组的左半部分继续查找。
- 如果目标值大于中间元素,则在数组的右半部分继续查找。
代码解释:
binary_search(arr, target)函数接受两个参数:待查找的数组arr和目标值target。low和high分别表示当前查找范围的起始索引和结束索引。while循环用于不断缩小查找范围,直到找到目标值或查找范围为空。mid表示当前查找范围的中间索引。- 如果
arr[mid]等于target,则返回mid,表示目标值在数组中的索引。 - 如果
arr[mid]小于target,则将low设置为mid + 1,表示在数组的右半部分继续查找。 - 如果
arr[mid]大于target,则将high设置为mid - 1,表示在数组的左半部分继续查找。 - 如果循环结束时
low大于high,则表示目标值不在数组中,返回-1。
总结:
二分查找算法是一种非常高效的查找算法,特别适用于已排序的数据集。其时间复杂度为 O(log n),比线性查找算法 O(n) 快很多。
原文地址: https://www.cveoy.top/t/topic/lFAK 著作权归作者所有。请勿转载和采集!