二分法查找,必须要求数组为有序数组.
/** js二分法查找 **/
function binarySeach( arr,val,leftIndex,rightIndex ){
// arr ==>要检索的数组,
// val ==>要查询的数,
// 从下标几 leftIndex 查到 rightIndex
var midIndex = Math.floor((leftIndex+rightIndex)/2);
var midval=arr[midIndex]; //找到中间的值
if( leftIndex > rightIndex ){
console.log('未找到这个数');
return ;
}
if( midval > val ){ //如果中间的值大于你要找的数,
binarySeach(arr,val,leftIndex,midIndex-1); //那么找取前半段;
}else if(midval < val){ //如果中间的值小于你要找的数,
binarySeach(arr,val,midIndex+1,rightIndex); //那么找取前半段;
}else{ //当值等于时找到;
console.log("找到了,下标为:"+midIndex);
return;
}
}
var arr=[2,12,35,36,37,38,39,52,59,64,87];
binarySeach(arr,38,0,arr.length-1);