Alles Gute im Neuen Jahr, Frank.
Ob das eine wirklich gute Idee ist - innerhalb der binären Suche eine Schrittweite einzuführen? Ich würde das außen vor lassen:
Delphi-Quellcode:
const
E6: array [0..5] of Integer = (100, 150, 220, 330, 470, 680);
function Find(value: Integer; series: array of Integer; var index: Integer): Boolean;
var
iLow, iHigh, i, c: Integer;
begin
Result := False;
iLow := 0;
iHigh := High(series);
while not Result and (iLow <= iHigh) do
begin
i := (iLow + iHigh) shr 1;
if series[i] < value
then iLow := Succ(i)
else iHigh := Pred(i);
Result := series[i] = value;
if Result then
iLow := i;
end;
index := iLow;
end;
// Test
var
i, r: Integer;
begin
Find(500, E6, i);
if i = Length(E6)
then r := 10 * E6[0]
else r := E6[i];
end;
Getippt und nicht getestet.
Freundliche Grüße