Пожалуйста, найдите мой код ниже для линейного поиска. Функция двоичного поиска дает правильный вывод. Но после проведения стресс-тестирования я не получаю правильные результаты линейного поиска. При реализации того же кода для линейного поиска с тем же входным сигналом (тестовый пример), что и при стресс-тестировании, код выдает правильный вывод.
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. Я не могу найти ошибку.