📜  对排序向量中的二进制搜索(1)

📅  最后修改于: 2023-12-03 15:25:11.203000             🧑  作者: Mango

对排序向量中的二进制搜索

二进制搜索是一种高效的查找算法,它可以在排序后的向量中快速查找目标值。它的时间复杂度为 O(log n),比顺序查找 O(n) 要快得多。

基本思想

二进制搜索的基本思想是:将排序后的向量分为两半,如果目标值比中间值小,则在左半部分查找;如果目标值比中间值大,则在右半部分查找。每次查找都可以将搜索范围缩小一半,因此算法非常高效。

实现过程

二进制搜索的实现过程可以分为以下几步:

  1. 计算中间元素的下标;
  2. 如果中间元素等于目标值,则返回中间元素的下标;
  3. 如果中间元素大于目标值,则在左半部分继续查找;
  4. 如果中间元素小于目标值,则在右半部分继续查找;
  5. 如果左右两半部分没有目标值,则返回不存在。

代码实现:

int binarySearch(vector<int>& nums, int target) {
    int left = 0, right = nums.size() - 1;
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (nums[mid] == target) {
            return mid;
        } else if (nums[mid] > target) {
            right = mid - 1;
        } else {
            left = mid + 1;
        }
    }
    return -1;
}
总结

二进制搜索是一种高效的查找算法,它可以在排序后的向量中快速查找目标值。在程序实现中,可以利用二分法不断缩小查找范围,直到找到目标值或者确定目标不在向量中。