home *** CD-ROM | disk | FTP | other *** search
- 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 }
-
-
-
-