/**
* 二分法
* @param {*} arr 一个有序的数组 eg: [1,2,3,4,5,6,7,8]
* @param {*} key
* 返回相同项的下标
*/
function binary_while(arr,key){
var left = 0,right=arr.length-1;
while(left>=right){
var min = parseInt((right - left)/2);
if(key == arr[min]){
return min;
}else if(key > arr[min]){
left = min + 1;
}else if(key < arr[min]){
right = min - 1;
}else{ //找不到返回-1
return -1;
}
}
}
//递归实现
function binary_recursion(arr,low,high,key){
if (low > high) {
return -1;
}
var mid = parseInt((high + low) / 2);
if (arr[mid] == key) {
return mid;
} else if (arr[mid] > key) {
high = mid - 1;
return binary_search(arr, low, high, key);
} else if (arr[mid] < key) {
low = mid + 1;
return binary_search(arr, low, high, key);
}
}
二分法(笔记)
最新推荐文章于 2024-02-27 23:07:50 发布