温馨提示:这篇文章已超过230天没有更新,请注意相关的内容是否还可用!
![python折半查找—Python折半查找非递归算法:代码示例 python折半查找—Python折半查找非递归算法:代码示例](https://www.guihejia.com/zb_users/upload/2023/11/202311241700812765120516.jpg)
折半查找(二分查找)是一种常用的查找算法,适用于已排序的数据集合。该算法的基本思想是将要查找的值与数据集合的中间值进行比较,如果相等则直接返回,如果要查找的值比中间值小,则在数据集合的前半部分继续查找,如果要查找的值比中间值大,则在数据集合的后半部分继续查找。通过不断缩小查找范围,最终可以找到目标值或确定目标值不存在。
下面是一个使用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
在这段代码中,我们首先初始化查找范围的最低索引`low`为0,最高索引`high`为数组长度减1。然后使用一个循环,当`low`小于等于`high`时,不断进行查找。在每次循环中,我们计算中间索引`mid`,并将目标值与中间值进行比较。如果相等,则返回中间索引;如果目标值小于中间值,则将`high`更新为`mid - 1`,缩小查找范围至前半部分;如果目标值大于中间值,则将`low`更新为`mid + 1`,缩小查找范围至后半部分。
如果循环结束后仍未找到目标值,则返回-1,表示目标值不存在于数组中。
这是一个典型的非递归的折半查找算法,它的时间复杂度为O(log n),其中n表示数据集合的长度。