二分算法Binary algorithm
二分算法 :称为折半法,是一种在有序数组中查找特定元素的搜索算法,主要用于数组的数据比较多的时候
二分算法查找的思路如下:
1.首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步;
2.如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重新步骤1的操作;
3.如果某一步数组为空,则表示找不到目标元素.
// 非递归
function binarySearch(arr, key) {
let low = 0; //数组的最小索引值
let hign = arr.length-1; //数组最大的索引值
while (low <= hign) {
var mid = Math.floor((low + hign) / 2) //中间值
if (key == arr[mid]) {
return mid
} else if (key > arr[mid]) {
low = mid + 1
} else {
hign = mid - 1
}
}
return -1
}
binarySearch([1,2,3,4,69,9],8) //-1
binarySearch([1,2,3,4,69,9],2) //1
//递归算法
function binarySearch1(arr,low,high,key){
if(low>high) {return-1}
var mid =Math.floor((low+high)/2)
if(key==arr[mid]){
return mid
}else if(key>arr[mid]){
low=mid+1
return binarySearch1(arr,low,high,key)
}else {
high=mid-1
return binarySearch1(arr,low,high,key)
}
}
binarySearch1([0,2,36,3,2,8],0,9,8)

浙公网安备 33010602011771号