Else
Else
End
Begin
Begin
Else
End
Begin
Repeat
Begin
Var
Q,P,I,FLAG,A,KP,KQ:integer;
FLAG:=0;
P:=N;
Q:=1;
if P<Q then
FLAG:=1;
Writeln('Объект не найден');
I:=Trunc((P-Q)*(A-K[Q])/(K[P]-K[Q]))+Q; (меньшее или равное Х, если Х >=0, и большее или равное Х, если X<0)
if A=date[I] then
FLAG:=1;
Writeln('Объект успешно найден ' + I)
if A>date[I] then
Q:=I+1
P:=I-1;
end;
until FLAG=1;
end;
Всего положительных элементов N, date[0]=0.
Недостатки.
1.Нужно вычислять Kp и KQ, что особенно неудобно для файла.
2. Можно применять только для числовых уключей
При однородном бинарном поиске аргумент поиска А сравнивается с
ключом Ki, находящимся в середине интервала поиска. Отличие этого ме-
тода от бинарного поиска заключается в том, что вместо трех указате-
лей Q, i и P используются только два: текущее положение i и величина
его изменения H. После каждого сравнения A и Ki, не давшего равенства,
устанавливается
I=I+-; H=
Поиск заканчивается неудачно, если приращение становится равным 0.
Структурограмма алгоритма однородного бинарного поиска приведена
|
|
на рис.