Функция бинарного поиска
|
2025 год. Фирма Microsoft представляет собой корпорацию-государство. Билл Гейтс удалился в мир иной, на собрании акционеров выступает новый глава корпорации Вольдемар В. Жириновский:
- Вас обманывают эти подонки из INTEL, в процессоре UltraProPentiumMMX&MCMIX-4 содержатся ошибки, масоны захватили Internet, от работы с "мышью" прогрессирует геморрой, но самое главное - в 1 гигабайте не 1024, а 1023 мегабайта!
|
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 }
|
|