Линейный поиск
a: ARRAY[0..N] OF INTEGER
i := 0;
WHILE (i < N) AND (a[i] <> x) DO
i := i+1 ;
END;
Линейный поиск с барьером
a[N] := x;
i := 0;
WHILE a[i] <> x DO
i := i+1;
END;
Поиск делением пополам (двоичный поиск).
Вариант 1
L := 0;
R := N-1;
found := FALSE;
WHILE (L < R) AND NOT found DO
m := любое значение между L и R;
IF a[m] = x THEN found := TRUE;
IF a[m] < x THEN L := m+1
ELSE R := m-1;
ENDIF;
ENDWHILE;
Вариант 2
L := 0;
R := N;
WHILE L < R DO
m := (L+R) DIV 2;
IF a[m] < x THEN L := m+1
ELSE R := m ;
END
END
Индексно-последовательный поиск
i = 1
while (i <= m) and (kind(i) <= key) do
i=i+1
endwhile
if i = 1 then low = 1
else low = pind(i-1)
endif
if i = m+1 then hi = n
else hi = pind(i)-1
endif
for j = low to hi
if key = k(j) then
search = j
return
endif
next j
search = 0
return