Python搜索算法-二分查找算法详解
作者:野牛程序员:2024-04-12 20:52:16python阅读 2645
Python搜索算法-二分查找算法详解
二分查找算法是一种高效的搜索算法,适用于已排序的数组。它的基本思想是将待查找的区间分成两部分,通过比较目标值与区间中间元素的大小关系,确定目标值可能存在的区间,然后继续在该区间内进行查找,直到找到目标值或者确定目标值不存在。
以下是Python实现的二分查找算法的详细解释:
def binary_search(arr, target): left = 0 right = len(arr) - 1 while left <= right: mid = (left + right) // 2 # 如果目标值等于中间元素,则直接返回中间元素的索引 if arr[mid] == target: return mid # 如果目标值小于中间元素,则在左半部分继续查找 elif arr[mid] > target: right = mid - 1 # 如果目标值大于中间元素,则在右半部分继续查找 else: left = mid + 1 # 如果未找到目标值,则返回 -1 return -1 # 示例用法 arr = [1, 3, 5, 7, 9, 11, 13] target = 7 result = binary_search(arr, target) if result != -1: print(f"目标值 {target} 在数组中的索引为 {result}") else: print(f"目标值 {target} 不存在于数组中")
在上述代码中,binary_search
函数接受一个已排序的数组 arr
和一个目标值 target
作为参数。它通过迭代的方式在数组中搜索目标值,使用两个指针 left
和 right
来确定搜索区间。每次迭代中,它计算中间元素的索引 mid
,然后与目标值进行比较。如果找到目标值,则返回其索引;否则,根据比较结果缩小搜索区间,直到找到目标值或确定目标值不存在为止。
这种算法的时间复杂度为 O(log n),其中 n 是数组的长度。因此,二分查找算法通常比线性查找算法更快,尤其是对于大型有序数组来说。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
- 上一篇:C#实现的二分查找算法
- 下一篇:C#使用欧姆龙PLC的Fins协议读写PLC地址