所谓二分法查找法,也就是折半查找,它是一种在有序数组查找特定元素的搜索算法。
参考《前端程序员面试秘籍》
var arr = [1,2,3,4,5,6];
function getIndex1(arr,key){
var low = 0;
var high = arr.length-1;
while(low<=high){
var mid = Math.floor((low+high)/2);
if(key===arr[mid]){
return mid;
}else if(key>arr[mid]){
low = mid+1;
}else{
height = mid-1;
}
}
return -1;
}
console.log(getIndex1(arr,5));//4
思想:从数组中开始查找,如果该元素是要搜索的目标元素,则循环结束,如果不是继续下一步,如果目标元素大于或者小于中间元素,则在数组大于或者小于中间元素的那一半区域进行查找,进而重复上面操作。如果数组是空的,则找不到该目标元素。