原理
二分查找高效的前提是数据结构是有序的
思路:
1.排序
2.将数组折半,分成左右两个数组。
3.判断要查找的数和中间位置数值的大小,来判断要查找的数实在哪一半。
4.之后继续折半查找,直至找到这个数。
图解:
首先是找出各个指针;
此时target>arr[mid],所以left=mid+1,然后更新arr[mid];
此时target<arr[mid],所以right=mid_1,然后更新arr[mid];最后发现arr[mid]=target,结束
例子
let arr=[1,5,34,56,78,90]
function getarr(arr,target)
{
let left=0;
let right=arr.length-1;
while(left<=right)
{
let mid=parseInt((left+right)/2);
if(target==arr[mid])
{
return mid;
}else if(target>arr[mid])
{
left=mid+1;
}else
{
right=mid-1;
}
}
return -1;
}
let result=getarr(arr,6);
console.dir(result)
效果展示: