Как было отмечено выше, если никаких 
дополнительных сведений о массиве, в котором хранятся данные, нет то 
ускорить поиск нельзя. Если же заранее известна некоторая информация о 
данный, среди которых ведется поиск, например, 
массив данных отсортирован, удается существенно сократить время работы, применяя другие методы поиска.
Одним из методов поиска, более 
эффективным, чем линейный, является бинарный ( двоичный ) поиск, 
называемый также методом половинного деления. При его использовании на 
каждом шаге область поиска сокращается вдвое.
program n8;const 
n=10;var x,l,r,m,i:integer;    f:boolean;    a:array[1..n] of 
integer;begin  writeln('Введите исходный массив:');  for i:=1 to n do 
read(a[i]);  writeln('Введите x');  readln(x);  l:=1;  r:=n;  f:=false;
 while (l<=r)and not f do
 begin
 m:=(l+r) div 2;
 if a[m]=x then f:=true else  if a[m] end;
 writeln('a[',m,']=',x,'=x');
end.
Программа этой же сортировки с использованием барьера.
program n9;const n=10;var x,l,r,m,i:integer;    f:boolean;    a:array[1..n] of integer;
begin
 writeln('Введите исходный массив:');
 for i:=1 to n do read(a[i]);
 writeln('Введите x');
 readln(x);
 l:=1;
 r:=n;
 f:=false;
 while (l<=r)and not f do
 begin
 m:=(l+r) div 2;
 if a[m]=x then f:=true else  if a[m] end;
 writeln('a[',m,']=',x,'=x');
end.


