二分查找适用于一个有序的较大数组,核心思想是将查找元素和数组的中间元素作比较,一分为二进行查找,查找速度快
一种易于理解的代码如下:
function binary_search(arr,key){
var low=0,high=arr.length-1;//此处为下标11
while(low<=high){
var middle=parseInt((low+high)/2);
if(key===arr[middle]){
return middle;
}else if(key>arr[middle]){
low=middle+1;
}else if(key<arr[middle]){
high=middle-1;
}
}
return -1;
}
var arr = [1,2,3,4,5,6,7,8,9,10,11,23,44,86];
var rst1=binary_search(arr,3);
var rst2=binary_search(arr,100);
console.log(rst1);//2
console.log(rst2);//-1