Суть линейного поиска состоит в том, что поочерёдно сверяются значения элементов массива с искомым значением, пока не достигнут конец массива.
Допустим, x
- искомое значение в массиве A
целых чисел размера N
элементов.
Условиями поиска являются:
Итак, алгоритм таков:
Установить счётчик в начальное положение Цикл Пока (не достигнут конец массива) И (Элемент массива не явдяется искомым) Выполнять Увеличение счётчика
или на Паскале:
i := 1; while (i <= N) And (A[i] <> x) do Inc (i);
Таким образом, искомый элемент x
считается найденным в массиве A
, если индекс позиции i
находится в пределах 1..N
. Если же i > N
, то элемент не был найден в массиве.
const N = 12; type TArr = array[1..N] of integer; { заполнение массива случайными значениями } procedure GenArrayVal (var V: TArr; const n: integer); var k: integer; begin randomize; for k := 1 to N do V[k] := random(10); end; { вывод на экран массива } procedure PrintArrayVal (var V: TArr; const n: integer); var i: integer; begin for i := 1 to N do write (V[i]:4); writeln; end; { линейный поиск } function LinearSearch (x: integer; A: TArr): integer; var i: integer; begin i := 1; while (i <= N) And (A[i] <> x) do Inc (i); LinearSearch := i end; var V: TArr; x, i: integer; begin GenArrayVal (V, N); PrintArrayVal (V, N); x := 5; { искомое значение } i := LinearSearch (x, V); if i > N then writeln (x, ' не найден.') else writeln (x, ' найден у позиции #', i) end.