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

来源:互联网 发布:知父莫若子by谦心诀 编辑:程序博客网 时间:2024/04/29 08:51

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源码地址

0 0
原创粉丝点击