1.二分法:纸面上就是取数组的中间值,进行对比;
用途:可以对有序数组进行对比筛选,是否含有目标值(target)
语言:javascript
分别用start,end,mid变量来表示开头,结尾,中间坐标,
如果目标值小于mid对应的值,那就往左缩小范围,
反之往右缩小范围
代码:
function Dichotomy(arr,target){
if(arr == null || arr.length == 0){
return -1;
}
var start = 0 ,end = arr.length-1;
while(start+1<end){
var mid = Math.floor((start + end)/2);
// console.log(mid);
if(target<arr[mid]){
end = mid;
}else if(target>arr[mid]){
start = mid;
}else{
return mid;
}
}
if(arr[start] == target){
return start;
}else if(arr[end]==target){
return end;
}
return -1;
}
var arr = [1,1,3,1,1,1,1,1,4,5,6,4,4];
// var arr = [10];
var result = Dichotomy(arr,1);
console.log(result);