binary_search()函数在我的函数体中不起作用

问题描述 投票:0回答:2

问题是-

给出一个经过排序并旋转的N个不同元素的数组A,该数组在某个点旋转并给定元素K。任务是在数组A中找到给定元素K的索引。

输入:输入的第一行包含一个整数T,表示测试用例的总数。然后是T测试用例。每个测试用例包含三行。每个测试用例的第一行包含一个整数N,它表示给定数组的大小。每个测试用例的第二行包含N个以空格分隔的整数,它们表示数组A的元素。每个测试用例的第三行包含一个整数K,表示要在数组中搜索的元素。

输出:对于每个测试用例,在新行中打印元素K的索引(从0开始的索引),如果数组中不存在K,则打印-1。

用户任务:完成Search()函数,如果在数组中找到,则返回元素K的索引。如果该元素不存在,则返回-1。

预期时间复杂度:O(log N)。

期望的辅助空间:O(1)。

约束:

1≤T≤1001≤N≤1070≤Ai≤1081≤K≤108

示例:输入:395 6 7 8 9 10 1 2 31033 1 21个43 5 1 26输出:51个-1

我所需功能的解决方案:-

// vec : given vector of elements  
// K : given value whose index we need to find   

int Search(vector<int> vec, int K) 
{
    if(binary_search(vec.begin(),vec.end(), K))
    {
        return 1;
    }
    else return -1;
}

这不是问题的逻辑,但我的目标是要一种方法,该方法首先需要我确定向量中是否存在元素。但是在给出上述测试用例的情况下,我的代码的输出是:-1-1-1这表示在任何情况下都找不到该元素,而在前两种情况下它实际上存在于向量中。我在哪里错了?

问题是-给定一个经过排序和旋转的N个不同元素的数组A,该数组在某个点旋转,并给定元素K。任务是在数组A ...中找到给定元素K的索引。

c++ arrays algorithm vector binary-search
2个回答
1
投票

std::binary_search的先决条件之一就是必须对要搜索的数组进行排序,相反,可以编写自己的线性搜索:


0
投票

二进制搜索意味着您已经对数组进行了排序。您的所有输入数组均未排序

© www.soinside.com 2019 - 2024. All rights reserved.