Линейный или последовательный поиск - самый простой из алгоритмов поиска элемента в массиве.
Алгоритм заключается в обходе всех элементов массива, как правило, слева на право, и сравнения их с искомым значением. Если значения элемента и ключа совпадают, то поиск возвращает индекс элемента.
По скольку линейный алгоритм, обходит массив последовательно, он очень медленный.
Тем не менее этот метод используется для поиска:
- на небольших массивах данных;
- в потоковой обработке данных;
- поиске минимального и максимального значения массива;
- на одиночных неупорядоченных больших массивах.
Программа для последовательного поиска элемента массива
{$CODEPAGE UTF8}
program SequentialSearch;
const
arrayLength = 10;
var
inputArray : array [1..arrayLength] of integer;
index, key: integer;
{функция для последовательного поиска}
function LinearSearch(k : integer): integer;
var
i : integer;
begin
i := 1;
while (i <= arrayLength) do
begin
if inputArray[i] = k then
begin
LinearSearch := i;
Exit; {досрочное завершение функции}
end;
i := i + 1;
end;
{сюда попадаем в случае если ничего не нашли}
LinearSearch := -1;
end;
begin
randomize;
writeln ('Исходный массив: ');
{заполнение случайными числами}
for index := 1 to arrayLength do
begin
inputArray[index] := random(100);
write (inputArray[index]:4);
end;
writeln;
write('Искомое значение ');
readln(key);
index := LinearSearch(key);
if index = -1 then
writeln ('Элемент не найден')
else
writeln ('Индекс элемента в массиве ', index);
readln;
end.
Функция для линейного поиска с использованием цикла for
В функции используется цикл while do, можно легко модифицировать программу использовав цикл for.
function LinearSearch(k : integer): integer;
var
i : integer;
begin
for i := 1 to arrayLength do
if inputArray[i] = k then
begin
LinearSearch := i;
Exit; {выход из функции последовательного поиска}
end;
{возвращаем -1 если ничего не нашли}
LinearSearch := -1;
end;