Введение

Поиск в массиве по порядку

В информатике линейный поиск или последовательный поиск — это метод поиска элемента в списке. Он последовательно проверяет каждый элемент списка, пока не будет найдено совпадение или не будет просмотрен весь список. В худшем случае линейный поиск выполняется за линейное время и требует не более n сравнений, где n — длина списка. Если вероятность поиска каждого элемента одинакова, то в среднем линейный поиск требует сравнений, однако среднее число сравнений может изменяться, если вероятности поиска для разных элементов различаются. Линейный поиск редко бывает практичным, поскольку другие алгоритмы и структуры данных, такие как алгоритм бинарного поиска и хеш-таблицы, обеспечивают значительно более быструю скорость поиска для списков, за исключением очень коротких.

Алгоритм

Линейный поиск последовательно проверяет каждый элемент списка, пока не обнаружит элемент, соответствующий искомому значению. Если алгоритм достигает конца списка, поиск завершается неудачно.

Применение

Линейный поиск обычно очень прост в реализации и практичен, когда список содержит лишь несколько элементов или выполняется единичный поиск в неупорядоченном списке. Если в одном списке необходимо найти много значений, часто целесообразно предварительно обработать список, чтобы использовать более быстрый метод. Например, можно отсортировать список и применить двоичный поиск или создать на его основе эффективную структуру данных для поиска. Если содержимое списка часто изменяется, повторная переорганизация может оказаться более затратной, чем выгодной. В результате, даже если в теории другие алгоритмы поиска могут быть быстрее линейного (например, двоичный поиск), на практике даже для массивов среднего размера (примерно до 100 элементов) использование других методов может быть нецелесообразным. Для больших массивов имеет смысл применять более быстрые методы поиска только в том случае, если объем данных достаточно велик, поскольку время, необходимое для предварительной подготовки (сортировки) данных, сопоставимо со временем, затрачиваемым на множество линейных поисков.