#3454. [GESP202412 五级 C++] 第 11 题
[GESP202412 五级 C++] 第 11 题
给定一个长度为 n 的有序数组 nums,其中所有元素都是唯一的。下面的函数返回数组中元素 target 的索引。
int binarySearch(vector<int> &nums, int target, int left, int right) {
if (left > right) {
return -1;
}
int middle = left + ((right - left) / 2);
if (nums[middle] == target) {
return middle;
}
else if (nums[middle] < target) {
return binarySearch(nums, target, middle + 1, right);
}
else
return binarySearch(nums, target, left, middle - 1);
}
int Find(vector<int> &nums, int target) {
int n = nums.size();
return binarySearch(nums, target, 0, n - 1);
}
关于上述函数,描述不正确的是( )。
{{ select(1) }}
- 函数采用二分查找,每次计算搜索当前搜索区间的中点,然后根据中点的元素值排除一半搜索区间。
- 函数采用递归求解,每次问题的规模减小一半。
- 递归的终止条件是中间元素的值等于
target,若数组中不包含该元素,递归不会终止。 - 算法的复杂度为 。