二分法查找(即在一组有序排列的数组中查找某个元素的算法)
二分法查找也是面试中经常被问到的一个, 下面我们就来简单的实现一下
实现说明:
(1).取数组的中间值和我们传入的元素进行对比,如果相等直接返回元素所在的索引。
(2).如果中间值小于我们传入的元素, 那么取大于中间值的那一部分重新执行(1)。
(3).如果中间值大于我们传入的元素, 那么去小于中间值的那一部分重新执行(1)。
(4).查询不到结果则返回-1;
代码实现:
function search(arr, key) {
var left = 0;
var right = arr.length - 1;
while(left < right){
var middle = parseInt((left + right)/2);
if(key == arr[middle]){
return middle;
}else if(key < arr[middle]){
right = middle + 1;
}else if(key > arr[middle]){
left = middle -1;
}else {
return -1;
}
}
}
console.log('结果,',search([1,2,3,4,5,6,7,8,9],3))