给定一个长度为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);
}
关于上述函数,描述不正确的是( )。
函数采用二分查找,每次计算搜索当前搜索区间的中点,然后根据中点的元素值排除一半搜索区间。
函数采用递归求解,每次问题的规模减小一半。
递归的终止条件是中间元素的值等于 target ,若数组中不包含该元素,递归不会终止。
算法的复杂度为O(log n).