手机版

JavaScript二分搜索法算法原理及实现示例

时间:2021-08-30 来源:互联网 编辑:宝哥软件园 浏览:

本文阐述了JavaScript二分搜索法算法的原理和实现。分享给大家参考,如下:

一、问题描述:

在升序数组中,使用二分搜索法获得要查询的值的索引位置。例如:

var a=[1,2,3,4,5,6,7,8,9];搜索(a,3);//返回2search(a,1);//左边界,返回0search(a,9);//右边界,返回8search(a,0);//小于最小值,返回‘你要找的值不存在’搜索(a,10);//大于最大值,并返回“您要查找的值不存在”。注意:二分搜索法在有序数组中必须有效,无序数组不能实现搜索功能。比如在[10,5,6,7,8,9,20]中找10,中间索引位置的值是7,对比显示7小于10,应该在右边的子数组中找,但实际上是不可能找到10的;

第二,我的认识

函数搜索(arr,num){ var l=arr . length;var left=0;var right=l-1;var center=Math.floor((左/右)/2);while(left=l-1 right=0){ if(arr[center]==num)返回中心;如果(left==right)返回“您要查找的号码不存在”;if(arr[center]num){ right=center-1;center=Math.floor((左/右)/2);} else if(arr[center]num){ left=center 1;center=Math.floor((左/右)/2);} }}var a=[1,2,3,4,5,6,7,8,9];console.log(搜索(a,-2));描述:

1、基本思路:

每次比较,如果数组中间索引位置的值大于要搜索的值,则在数组中间位置之前的子数组中搜索;相反,如果数组中间索引位置的值大于要搜索的值,则在数组中间位置之后的子数组中搜索;如果数组中间索引位置的值正好等于要搜索的值,则返回索引位置。

2.左定义搜索范围的开始位置,右定义搜索范围的结束位置,中心定义搜索范围的中间位置。

3.while中的逻辑描述:

(1)因为不知道搜索了多少次,趁着是更好的选择;

(2)循环结束条件:

a、一旦右边小于0,就不再搜索,再纠缠就没有结果了。例如,在a=[1,2,3,4,5,6,7,8,9]中查找0。当搜索范围变为left=0,right=0,center=0时,输入while语句,并执行arr[center]0。

右=中心-1;center=Math.floor((左/右)/2);得到right=-1,那么就不应该再进入循环;

b、一旦当leftl-1,就不再搜索,再纠缠就没有结果了。例如,在a=[1,2,3,4,5,6,7,8,9]中寻找10。当搜索范围变为left=8,right=8,center=8时,输入while语句,并执行arr[center]10。

左=中心;center=Math.floor((左/右)/2);Get left=9,此时不应再进入循环;

4.始终匹配通过中心找到的值;

5.Math.floor处理搜索范围长度为偶数的情况;

6.当left==right,arr[center]==num未执行时,可以断定找不到;

7.当arr[center]==num时,整个功能就完成了,下面的语句就不执行了。

以上代码使用了在线HTML/CSS/JavaScript代码运行工具,http://tools.jb51.net/code/HtmlJsRun测试结果如下:

更多对JavaScript相关内容感兴趣的读者可以查看本网站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》和0103010

希望本文对JavaScript编程有所帮助。

版权声明:JavaScript二分搜索法算法原理及实现示例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。