算法——二分法查找(binarySearch)

算法——二分法查找(binarySearch)二分法查找 也称为折半法 是一种在有序数组中查找特定元素的搜索算法 二分法查找的思路如下 1 首先 从数组的中间元素开始搜索 如果该元素正好是目标元素 则搜索过程结束 否则执行下一步 2 如果目标元素大于 小于中间元素 则在数组大于 小于中间元素的那一半区域查找 然后重复步骤 1 的操作 3 如果某一步数组为空 则表示找不到目标元素 二分法查找的时间复杂度 O logn 非递归算法 func

二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法。

二分法查找的思路如下:

(1)首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。

(2)如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤(1)的操作。

(3)如果某一步数组为空,则表示找不到目标元素。

二分法查找的时间复杂度O(logn)。

非递归算法:

function binarySearch(arr,key){ var low=0; //数组最小索引值 var high=arr.length-1; //数组最大索引值 while(low<=high){ var mid=Math.floor((low+high)/2); if(key==arr[mid]){ return mid; }else if(key>arr[mid]){ low=mid+1; }else{ high=mid-1; } } return -1; //low>high的情况,这种情况下key的值大于arr中最大的元素值或者key的值小于arr中最小的元素值 }

结果测试:

算法——二分法查找(binarySearch)

递归算法:

function binarySearch(arr,low,high,key){ if(low>high){return -1;} var mid=Math.floor((low+high)/2); if(key==arr[mid]){ return mid; }else if(key 
  

结果测试:

算法——二分法查找(binarySearch)



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204749.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:38
下一篇 2026年3月19日 下午7:38


相关推荐

  • 【持续更新】Ai扣子coze自动化工作流,系统化实战技术分享

    【持续更新】Ai扣子coze自动化工作流,系统化实战技术分享

    2026年3月13日
    3
  • 手眼标定_全面细致的推导过程

    手眼标定_全面细致的推导过程本文解决的问题:机械手搭载双目相机,手眼标定。本文有细致的推导过程,非常全面。什么是手眼标定?为什么会存在这个?使用李群李代数的方法求解AX=XB。

    2022年4月30日
    55
  • mysql查看查询慢的语句_sql慢查询如何优化

    mysql查看查询慢的语句_sql慢查询如何优化Mysql慢查询设置分析MySQL语句查询性能的方法除了使用EXPLAIN输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”。=========================================================方法一:这个方法我正在用,呵呵,比较喜欢这种即时性的。Mysql5.0以上的版本可以支持将执行…

    2022年10月14日
    4
  • FAE是什么?

    FAE是什么?FAE FieldApplica 售前工程师 技术支持 nbsp 主要是帮助客户使用某个公司产品 要求 FAE 对本公司的产品要十分熟悉 同时对常见的设计问题有丰富的经验 能快速的帮助客户用好本公司的产品 nbsp 通常这个职位不要求钻得很深 但必须能很好地理解客户的意图 知识面比较广 掌握客户的生产流程与项目进度 能帮客户解决问题 对自己解决不了的问题能够正确地反映给公司

    2026年3月20日
    2
  • JavaScript:三目运算符

    JavaScript:三目运算符HELLO大家好!三目运算符是一个非常简单且使用的运算符。是由两个运算符连接的三个操作数据或者表达式条件表达式?表达式1:表达式0当条件表达式为true则选择表达式1,反之false则选择表达式0举个栗子varage=15;console.log(age<18?’未成年’:’成年’);结果为:···本人写博客就是想记录一下自己所学的知识(目前正在学习中),巩固知识加深记忆,也顺便分享一下自己的所学,有什么地方写的不对,希望大家可以多多指出,让我及时改正。如果我分享的

    2022年6月17日
    36
  • CentOS中设置系统级代理

    CentOS中设置系统级代理YUM代理设置 编辑/etc/yum.conf,在最后加入#Proxyproxy=http://username:password@proxy_ip:port/ 也可以使用proxy_username和proxy_password来配置代理的用户名和密码 这样的配置完成后,所有的用户在使用yum时,都会使用代理,可以说是全局代理。 如果需要为单独的用户配置

    2022年5月18日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号