Please find my code below for linear search. Binary search function is giving the correct output. But after doing the stress testing I am not getting the correct output of linear search. When implementing the same code for linear search with the same input(test case) as produced by stress testing the code gives correct output.
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;
}
main function
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";
}
}
}
After running the above code, I am getting wrong(unexpected) output when the random input(produced by stress testing) is :
0 0 0 0 0
4
The output of linear search is 5 instead of -1. I am unable to find the error.