Меню сайта
Мини-чат
Чтобы добавить сообщение, необходимо авторизоваться.
Главная » Статьи » Не стандартные примеры на Delphi » Алгоритмы

Функция бинарного поиска

    function FoundByBinarySearch
(
LowIdx,
HighIdx : LongInt;
var   Result  : LongInt;
const GoalIs  : CompareFunc;
var   Data;
var   Goal
) : Boolean;
var
CompVal : CompareResults;
begin
FoundByBinarySearch := FALSE;

if HighIdx < LowIdx then
Exit;

Result := LowIdx + ((HighIdx-LowIdx) div 2);
CompVal := GoalIs(Result, Data, Goal);

if CompVal = BinEqual then
FoundByBinarySearch := TRUE
else if (LowIdx < HighIdx) then
begin
if CompVal = BinLess then
HighIdx := Result-1
else {CompVal = BinGreater}
LowIdx  := Result+1;
FoundByBinarySearch := FoundByBinarySearch(
LowIdx, HighIdx, Result, GoalIs, Data, Goal)
end
else if (CompVal = BinLess) then
Dec(Result)
end; { function FoundByBinarySearch }
Категория: Алгоритмы | Добавил: DelphiAiX (28.04.2012)
Просмотров: 619 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]