117.info
人生若只如初见

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

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

#include 
#include 

int binarySearch(const std::vector& 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 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;
}

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

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe5abAzsIAwZSDFY.html

推荐文章

  • C++ next_permutation与prev_permutation

    next_permutation和prev_permutation是C++标准库中的两个函数,用于在给定的序列中生成下一个排列和上一个排列。
    next_permutation函数可以生成给定序列的下...

  • C++ next_permutation的效率如何

    C++的next_permutation函数是标准库中用来生成给定序列的下一个排列的函数,其效率取决于输入序列的大小和特性。在最坏情况下,生成下一个排列需要O(n)的时间复杂...

  • C++ next_permutation函数怎么用

    在C++中,可以使用next_permutation函数来生成下一个排列。该函数位于头文件中,并接受两个迭代器作为参数:起始迭代器和结束迭代器。
    下面是一个简单的示例...

  • C++ next_permutation的时间复杂度

    C++中的next_permutation函数的时间复杂度为O(n),其中n为序列的长度。这是因为next_permutation函数的实现使用了一种高效的算法来生成下一个排列,时间复杂度主...

  • C++二分查找函数如何选择边界

    在使用C++实现二分查找函数时,通常需要选择合适的边界条件来确保函数能够正确地找到目标元素。常见的边界条件包括: 左边界:通常设为0,表示搜索范围的起始位置...

  • C++二分查找函数能提高效率吗

    是的,C++中的二分查找函数能够提高查找效率。二分查找是一种高效的查找方法,它能够在有序数组中快速定位目标元素,而不需要逐个比较每个元素。通过将数组分成两...

  • C++二分查找函数适用条件

    C++中的二分查找函数适用于以下条件: 数组或容器中的元素必须是有序的。
    数组或容器中的元素必须是可比较的,即支持比较运算符(如等)。
    只能用于查...

  • C++二分查找函数怎么实现

    在C++中实现二分查找函数可以按照以下步骤进行: 定义一个函数,接收一个有序数组和要查找的目标值作为参数。
    初始化两个指针,分别指向数组的起始和结束位...