在数组中查找一个数
var arr = [1, 3, 5, 7, 9]
普通方法
// 普通方法
function binarySearch(arr , val){
for(var i=0;i<arr.length;i++)
if(arr[i]==val)
return i;
}
//ES6方法
function binarySearch(arr , val){
return arr.findIndex(function(value){
return value==val;
});
}
二分查找法
// 二分查找法(只适合有序)
// 借助三个变量 start mid end
function binarySearch(arr, val) {
var start = 0;
var end = arr.length - 1;
var mid;
while (start <= end) {
mid=parseInt((start + end) / 2);
if (val == arr[mid])
//这个条件成立说明数据在左边,更新end
return mid;
else if (val < arr[mid]) {
//这个条件成立说明数据在右边,更新start
end = mid - 1;
} else {
start = mid + 1;
}
}
return -1;//用户给的数据在数组里没有找到,就返回一个-1;
}
console.log(binarySearch(arr, 5));