Javascript算法论道: 二分搜索(折半查找)

本文介绍了二分搜索算法的基本原理及其实现方式,并通过一个猜数字游戏的例子来帮助理解算法的工作流程。二分搜索是一种高效的查找算法,在有序数组中查找指定元素时特别有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Javascript算法论道: 二分搜索(折半查找)

本文是Javascript算法论道系列的第一篇,讨论一种大家经常遇到的算法——二分搜索算法,
想必大家都玩过”猜数字”游戏:
一般十个人以上玩,主持人出数字,下方猜。主持人在手机或电脑上写下在1-100之间随便1个数字,不能让猜得人知道。其他的人就可以开始猜。猜中的有奖励:
1-100中随机产生一个数字,如:56
每个人开始猜猜数字,如:A说:30 主持人说:低了,30到100 ,B在从30到100中猜数字说:60,主持人在说:高了,30到60,………… Z说:56,主持人说:恭喜你,中奖了!!!!
这和二分搜索的思路是一致的:

二分搜索(折半查找)是一种经典的检索算法。该算法的基本思想如下:
(1) 选择数组的中间值。 
(2) 如果选中值是待搜索值,那么算法执行完毕(值找到了)。 
(3) 如果待搜索值比选中值要小,则返回步骤(1)并在选中值左边的子数组中寻找。 
(4) 如果待搜索值比选中值要大,则返回步骤(1)并在选种值右边的子数组中寻找。 

算法的实现思路如下:

function binarySearch(target, array) {
  var low = 0,
    high = array.length - 1,
    mid, midElement;
  while(low <= high){
    mid = Math.floor((low + high) / 2);
    midElement = array[mid];
    if (target > midElement) {
      low = mid + 1;
    }else if (target < midElement){
      high = mid - 1;
    }else{
      console.log('target index is : ' + mid);
      return mid;
    }
  }
  return -1;
}

二分搜索github源码地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值