python折半查找—Python折半查找非递归算法:代码示例

xl1407

温馨提示:这篇文章已超过230天没有更新,请注意相关的内容是否还可用!

python折半查找—Python折半查找非递归算法:代码示例

折半查找(二分查找)是一种常用的查找算法,适用于已排序的数据集合。该算法的基本思想是将要查找的值与数据集合的中间值进行比较,如果相等则直接返回,如果要查找的值比中间值小,则在数据集合的前半部分继续查找,如果要查找的值比中间值大,则在数据集合的后半部分继续查找。通过不断缩小查找范围,最终可以找到目标值或确定目标值不存在。

下面是一个使用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表示数据集合的长度。

文章版权声明:除非注明,否则均为莫宇前端原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码