c++ - 线性搜索的意外输出
问题描述
请在下面找到我的代码进行线性搜索。二进制搜索功能给出正确的输出。但是在进行压力测试之后,我没有得到正确的线性搜索输出。当使用与压力测试产生的相同输入(测试用例)实现相同的线性搜索代码时,代码会给出正确的输出。
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<int> a(n);
然后添加 push_back
元素n
。
这会导致和中的n*2
元素,您正在查看所有这些元素。我的猜测是第 5 个索引在这个特定的测试用例中具有价值。a
linear_search
4
推荐阅读
- python - 在 Keras 中形成多输入 LSTM
- python - 使用 scipy.integrate.nquad 实现数值积分
- google-bigquery - 以增量方式将数据从 GCP Datastore 移动到 BigQuery 的最佳做法
- angular - 是否可以获取服务的实例 ID?
- java - 硬币翻转模拟:计数正面/反面
- bash - 使用命令查找和复制,但使用带有名称的 list.txt
- javascript - 如何将文本字段的输入保存到 Javascript 对象文字中的名称属性?
- python - Mac上通过Anaconda的OpenCV 3.4.1--找不到包
- python - Python - 如何对齐 x 轴上的所有标签?
- css - WooCommerce 产品缩略图未正确显示