二分法寻找指定元素:前提数组排列有序
如果按照普通方法进行查找,耗费时间
一.二分法思想
定义开始节点和末尾节点,选则中间值作为参考点,将参考点与要寻找的目标值进行大小比较,
如果目标值===中间值 找到返回中间值
如果目标值>中间值 start=中间值+1
如果目标值<中间值 end=中间值-1
否则 返回 -1 代表没找到
二。代码实现
var arr=[1,4,6,88,99,123,234,567,678,677]
function search(target){
var start=0,end=arr.length-1,middle,element
while(start<=end){
// 寻找中间元素
middle=Math.floor((start+end)/2)
// 将中间元素赋值给变量
element=arr[middle]
// 判断中间元素是不是要寻找的目标值
if(element===target){
return element
}
// 判断中间元素和要寻找元素的大小
else if(element>target){
end=middle-1
}
// 判断中间元素和要寻找元素的大小
else {
start=middle+1
}
} return -1;
}