王鹿其 发表于 2023-10-28 11:31:17

编程实现二分查找算法

c++

isdkz 发表于 2023-10-28 11:32:11

二分查找算法是一种高效的搜索算法,适用于有序数组。它通过将待查找区间逐渐缩小一半来定位目标值。下面是C++中实现二分查找算法的示例代码:

#include <iostream>
#include <vector>

int binarySearch(const std::vector<int>& nums, int target) {
    int left = 0;
    int right = nums.size() - 1;

    while (left <= right) {
      int mid = left + (right - left) / 2;
      
      if (nums == target) {
            return mid;
      } else if (nums < target) {
            left = mid + 1;
      } else {
            right = mid - 1;
      }
    }

    return -1;// 目标值不存在
}

int main() {
    std::vector<int> nums = {1, 3, 5, 7, 9};
    int target = 5;
    int result = binarySearch(nums, target);
   
    if (result != -1) {
      std::cout << "目标值 " << target << " 在索引 " << result << " 处找到了。" << std::endl;
    } else {
      std::cout << "目标值 " << target << " 不存在。" << std::endl;
    }
   
    return 0;
}


在上述代码中, binarySearch函数接受一个有序整数数组nums和目标值target作为参数。它使用两个指针left和right来表示待查找区间的左右边界。

在每次循环中,算法计算中间位置mid ,并将其与目标值进行比较。如果nums等于目标值,则找到了目标值,返回mid 。

如果nums小于目标值,则目标值可能在mid的右侧,因此将left更新为mid + 1 。

如果nums大于目标值,则目标值可能在mid的左侧,因此将right更新为mid - 1 。

循环继续直到left大于right ,此时目标值不存在于数组中,返回 -1。

在main函数中,我们定义了一个有序数组nums和目标值target ,然后调用binarySearch函数进行查找。最后根据返回值判断是否找到目标值,并输出相应的结果。

以上是二分查找算法在C++中的实现。希望对你有帮助!
页: [1]
查看完整版本: 编程实现二分查找算法