gpt4 book ai didi

c++ - 线性搜索的意外输出

转载 作者:行者123 更新时间:2023-12-01 14:13:49 25 4
gpt4 key购买 nike

请在下面找到我的代码进行线性搜索。二进制搜索功能给出正确的输出。但是在进行压力测试之后,我没有得到正确的线性搜索输出。当使用与压力测试产生的相同输入(测试用例)实现相同的线性搜索代码时,代码会给出正确的输出。

int linear_search(const vector<int> &a, int x) 
{
for (int i = 0; i < a.size(); ++i)
{
if (a[i] == x)
{
return i;
}
}
return -1;
}

主要功能

int main() {
while(true)
{
int n=5;
vector<int> a(n);
for (size_t i = 0; i < n; i++) {
int b = rand() % 5 + 1;
a.push_back(b);
}
for (size_t i = 0; i < n; i++) {
std::cout<<a[i]<<" ";
}
std::cout<<"\n";
int x = rand() % 10 + 1;
std::cout<<x<<"\n";
int l = linear_search(a,x);
int b = binary_search(a,x);
if(l != b)
{

std::cout<<l<<"\n";
std::cout<<b<<"\n";
break;
}
else
{
std::cout<<"Ok\n";
}
}
}

运行上述代码后,当随机输入(由压力测试产生)为时,我得到错误(意外)输出:

0 0 0 0 0

4

线性搜索的输出是 5 而不是 -1。我找不到错误。

最佳答案

您正在这里创建一个带有 n 元素的 vector :

vector<int> a(n);

然后另外 push_backing n 元素。

这会导致 a 中的 n*2 个元素,而在 linear_search 中,您正在查看所有这些元素。我的猜测是,在这个特定的测试用例中,第 5 个索引的值为 4

关于c++ - 线性搜索的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61348068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com