Реализация линейного поиска в массивах
На этом этапе вы узнаете, как реализовать алгоритм линейного поиска на языке C++. Линейный поиск - это простой метод нахождения элемента в массиве, при котором каждый элемент проверяется последовательно до тех пор, пока не будет найден целевой элемент или не будет достигнут конец массива.
Откройте WebIDE и создайте новый файл с именем linear_search.cpp
в директории ~/project
:
touch ~/project/linear_search.cpp
Добавьте следующий код в файл linear_search.cpp
:
#include <iostream>
int linearSearch(int arr[], int size, int target) {
// Iterate through each element in the array
for (int i = 0; i < size; i++) {
// Check if current element matches the target
if (arr[i] == target) {
return i; // Return the index if found
}
}
return -1; // Return -1 if target is not found
}
int main() {
// Create an array of student scores
int scores[] = {85, 92, 78, 95, 88, 76, 90};
int size = sizeof(scores) / sizeof(scores[0]);
// Target score to search
int targetScore = 78;
// Perform linear search
int result = linearSearch(scores, size, targetScore);
// Display search results
if (result!= -1) {
std::cout << "Target score " << targetScore
<< " found at index " << result << std::endl;
} else {
std::cout << "Target score " << targetScore
<< " not found in the array" << std::endl;
}
// Try another search
int missingScore = 100;
result = linearSearch(scores, size, missingScore);
if (result!= -1) {
std::cout << "Score " << missingScore
<< " found at index " << result << std::endl;
} else {
std::cout << "Score " << missingScore
<< " not found in the array" << std::endl;
}
return 0;
}
Основные концепции линейного поиска:
- Последовательно проверяет каждый элемент массива.
- Возвращает индекс целевого элемента, если он найден.
- Возвращает -1, если целевой элемент не найден в массиве.
- Временная сложность: O(n) - линейное время.
- Прост в реализации и работает для неотсортированных массивов.
Скомпилируйте и запустите программу:
g++ linear_search.cpp -o linear_search
./linear_search
Пример вывода:
Target score 78 found at index 2
Score 100 not found in the array
Важные замечания о поиске:
- Линейный поиск прост в понимании, но неэффективен для больших массивов.
- Подходит для маленьких массивов или неотсортированных коллекций.
- Существуют более эффективные алгоритмы поиска для отсортированных массивов.