/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @param target int整型
* @return int整型
*/
function search(nums, target) {
// write code here
// 二分查询,参数分别为数组,目标值,左边界,右边界
function getIndex(list, val, l, r) {
// 对左右边界进行判定
if (l < r) {
// 取中位数下标
let mid = parseInt((l + r) / 2);
if (list[mid] > val) {
// 若中位数大于目标值,则在左半部分搜索
return getIndex(list, val, l, mid);
} else if (list[mid] < val) {
// 若中位数小于于目标值,则在右半部分搜索
return getIndex(list, val, mid + 1, r);
} else {
// 若中位数等于目标值,则返回中位数的下标
return mid;
}
} else {
if (l == r && list[l] == target) {
// 若搜索范围是1且对应值等于目标值,则返回下标
return l;
}
}
// 若左边界大于右边界,则找不到
return -1;
}
let len = nums.length;
let index = getIndex(nums, target, 0, len - 1);
// console.log("index:", index);
return index;
}
module.exports = {
search: search
};