Советы по 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 }

[000406]




- Начало -  - Назад -  - Вперед -