@H_502_0@本文实例讲述了基于JavaScript实现的折半查找算法。分享给大家供大家参考,具体如下:
@H_5020@折半查找也叫做
二分查找
,是针对有序表的一种查找方式,其思想如下:@H5020@将数组的第一个位置设为下边界;
@H5020@将数组的最后一个位置设为上边界;
@H5020@如果下边界等于或小于上边界,则做如下操作:
@H502_0@<span style="color: #333333"> 将中点设置为上边界加下边界之和除以二;
如果中点的元素小于查询的值,则将下边界设置为中点元素所在下标加1;
如果中点的元素大于查询的值,则将上边界设置为中点元素所在下标减1;
否则中点元素即为要查找的元素,可以进行返回。
@H_502_0@折半查找代码如下:
<div class="jb51code">
<pre class="brush:js;">
function binSearch(arr,data){//折半查找,也叫二分查找
var upperBound=arr.length-1;
var lowerBound=0;
while(lowerBound<=upperBound){//未遍历完
var mid=Math.floor((lowerBound+upperBound)/2);
document.write("当前中点为:"+mid+'
');//记录选中的中点
if(arr[mid]<data){
lowerBound=mid+1;
}else if(arr[mid]>data){
upperBound=mid-1;
}else{
return mid;
}
}
return -1;
}