单选题

给定一个长度为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);

}

关于上述函数,描述不正确的是(    )。

A

函数采用二分查找,每次计算搜索当前搜索区间的中点,然后根据中点的元素值排除一半搜索区间。

B

函数采用递归求解,每次问题的规模减小一半。

C

递归的终止条件是中间元素的值等于 target ,若数组中不包含该元素,递归不会终止。

D

算法的复杂度为O(log n).

赣ICP备20007335号-2