Лінійний пошук елемента в масиві

Лінійний чи послідовний пошук – найпростіший з алгоритмів пошуку елементів в масиві.

Алгоритм полягає в обході всіх елементів масиву, як правило, зліва направо, і пошувняння їх з шуканим значенням. Якщо значення елементу і ключа співпадають, то пошук повертає індекс(позицію) елементу.

Оскільки лінійний алгоритм обходить масив послідовно, то він досить повільний.

Тим не менш, цей метод використовується для пошуку:

  • на невеликих масивах даних;
  • в потоковій обробці даних;
  • пошуку мінімального та максимального значення масиву;
  • на одиночних невпорядкованих великих масивах.

Програма для послідовного пошуку елементу масиву

{$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.

В функції використовується цикл while do, його можна переписати використавши цикл for.

Функція для лінійного пошуку з використанням циклу 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;

Дивіться також: