Двоичный поиск

Двоичный поиск заключается в следующем: вычисляется середина массива и элемент xi, находящийся по найденному адресу, сравнивается с искомым. Если элементы xi и isk равны, то поиск закончен. Если xi < isk, то искомый элемент может находиться в последующей xi части массива, в противном случае поиск надо осуществлять в предшествующей xi части массива. Такой подход позволяет сократить число просматриваемых элементов в 2 раза. Далее в выделенной части массива также определяется средний элемент, и он сравнивается с искомым. Подобная процедура повторяется до тех пор, пока ни будет найден заданный элемент или пока не совпадут начальный и конечный адрес просматриваемой, на очередном шаге, части массива. Если эти адреса совпадут и к этому моменту элемент не найден, то его в массиве нет.

Временная сложность алгоритма двоичного поиска ~ log2n.

Схема алгоритма двоичного поиска

 

       
 
   
 


First - адрес начала просматриваемой части.


Last - адрес конца просматриваемой части


< =

       
   


>

       
   


Текст программы

Uses crt;

Var X:array[1..10000] of integer;

isk,i,n,adr,First,Last:integer;

Begin

write(' Введите число элементов в массиве - n ');

readln(n);

write(' Введите элементы массива Х ');

for i:=1 to n do read(X[i]);

writeln;

write(' Введите искомое число');

readln(isk);

First:=1; Last:=n;

while First <= Last do begin

adr:=(First+Last) div 2;

if isk=X[adr] then

begin writeln('Yes! isk = ',isk,' adr = ',adr);

exit

end

else if isk<X[adr] then Last:=adr-1

else First:=adr+1;

end; writeln(' Not found'); end.








Дата добавления: 2015-09-28; просмотров: 853;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.