Я пытаюсь создать алгоритм линейного поиска на C++, но у меня возникают некоторые проблемы с моей функцией linearSearch в моем коде. Это простой цикл цикла, и я не вижу, что кажется проблемой, я прошу пользователя ввести ключ, и если это ключ в массиве, он должен дать правильную позицию, но это не так. Может ли кто-нибудь увидеть, где я ошибся в своей реализации?C++ Линейный алгоритм поиска
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int linearSearch(int arr[],int size, int key){
for(int i = 0; i < size; ++i){
if(key == arr[i]){
return i;
}else{
return -1;
}
}
}
int main() {
const int size = 20;
int numbers[size];
srand((unsigned) time(0));
for(int i = 0; i < size; ++i){
numbers[i] = (rand() % 100) + 1;
cout << numbers[i] << " ";
}
cout << endl;
int key;
cout << "Enter a key to search for: " << endl;
cin >> key;
int retValue = linearSearch(numbers,size,key);
if(retValue >= 0){
cout << "Key found at position " << retValue << endl;
}else{
cout << "Key not found" << endl;
}
return 0;
}
Просто FWIW, 'станд :: find' уже обеспечивает линейный поиск. –