实现折半查算法的非递归和递归算法

实现折半查算法的非递归和递归算法
    折半查算法,也称二分查算法,是一种高效的查算法,适用于已排序的数组或列表。其思想是将待查区间的中间位置与目标值比较,根据比较结果缩小查区间,直到到目标值或者查区间为空。
    下面分别介绍实现折半查算法的非递归和递归算法。
    1. 非递归算法:
    非递归算法的基本思想是通过循环不断缩小查区间,直到到目标值或者查区间为空。具体步骤如下:
    1.1 初始化:定义查区间的左右边界,即最小值和最大值,左右边界初始值分别为0和n-1,其中n为数组或列表的长度。
    1.2 循环查:不断缩小查区间,直到到目标值或者查区间为空。具体步骤如下:
    1) 计算查区间的中间位置mid:mid = (left + right) / 2。
    2) 如果目标值等于中间位置的值,则返回mid。
    3) 如果目标值小于中间位置的值,则在左半部分继续查,将查区间的右边界更新为mid-1。
沈阳市实验学校
    4) 如果目标值大于中间位置的值,则在右半部分继续查,将查区间的左边界更新为mid+1。
    5) 循环直到到目标值或者查区间为空。
    1.3 返回结果:如果到目标值则返回其下标,否则返回-1。
    以下是非递归算法的Python实现代码:
    def binary_search(arr, target):
    left, right = 0, len(arr) - 1
    while left <= right:
    mid = (left + right) // 2
    if arr[mid] == target:
mpeg    return mid
    elif arr[mid] < target:
天津铁通
什邡市实验小学肌肉松弛剂    left = mid + 1
    else:
    right = mid - 1
    return -1
    2. 递归算法:
    递归算法的基本思想是将待查区间分为左右两个子区间,分别递归查,直到到目标值或者查区间为空。具体步骤如下:
    2.1 递归终止条件:如果查区间为空,则返回-1。
冀教版小学英语教案
    2.2 计算查区间的中间位置mid:mid = (left + right) // 2。
    2.3 如果目标值等于中间位置的值,则返回mid。
    2.4 如果目标值小于中间位置的值,则递归在左半部分查,将查区间的右边界更新为mid-1。
    2.5 如果目标值大于中间位置的值,则递归在右半部分查,将查区间的左边界更新为mid+1。

本文发布于:2024-09-21 23:25:20,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/397760.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查找   区间   目标值   递归   算法   找到
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议