- List item
实现查找有序数组中与目标值最为接近的数组元素下标
function findNearest(arr, target) {
let mid;
let start = 0;
let end = arr.length - 1;
// 保证指针最终停留在相邻的两个数,所以这里是判断是否大于1
while (end - start > 1) {
mid = Math.floor((start + end) / 2);
// 如果目标数比中间小,所以范围在左边
if (target < arr[mid]) {
end = mid;
} else {
start = mid;
};
};
// 最后比较这两个数字的绝对差大小即可。
return Math.abs(target - arr[start]) <= Math.abs(target - arr[end]) ? start: end;
}
let arr = [1,2,3,6,7]
let index = findNearest(arr, 4)
console.log(index)```