C++二分查找函数怎样处理重复值

   2024-10-06 3960
核心提示:在C++中,二分查找函数通常返回第一个找到的重复值的索引。如果要返回最后一个重复值的索引,可以稍作修改。以下是一个简单的二

在C++中,二分查找函数通常返回第一个找到的重复值的索引。如果要返回最后一个重复值的索引,可以稍作修改。以下是一个简单的二分查找函数示例,它返回第一个找到的重复值的索引:

#include <iostream>#include <vector>int binarySearch(const std::vector<int>& arr, int target) {    int left = 0;    int right = arr.size() - 1;    while (left <= right) {        int mid = left + (right - left) / 2;        if (arr[mid] == target) {            // 找到目标值,继续往左搜索            right = mid - 1;        } else if (arr[mid] < target) {            left = mid + 1;        } else {            right = mid - 1;        }    }    if (left < arr.size() && arr[left] == target) {        return left;    } else {        return -1; // 没有找到目标值    }}int main() {    std::vector<int> arr = {1, 2, 2, 3, 4, 5, 5, 5, 6};    int target = 5;        int result = binarySearch(arr, target);    if (result != -1) {        std::cout << "找到目标值在索引 " << result << std::endl;    } else {        std::cout << "未找到目标值" << std::endl;    }    return 0;}

需要注意的是,如果要返回最后一个重复值的索引,可以将二分查找函数中的判断条件稍作修改,具体根据需求来调整。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号