Es hätte nur den Vorteil, falls 10 in der Datenmenge enthalten ist, diese als erstes geholt würde. Eine Überprüfung, ob es sich dabei um den gesuchten Wert handelt muss trotzdem gemacht werden.marcov hat geschrieben:Code: Alles auswählen
for i in [low(x)..high(x)]-[10] do
...
Besser lesbar ist es nicht und es ist sogar bei mir noch langsamer, als wenn man einfach das komplette Array durchsucht:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
MyData: Array of Integer;
i, j , iSearch: Integer;
Cnt: QWord;
begin
SetLength(MyData, 100000000);
for i := Low(MyData) to High(MyData) do
MyData[i] := i;
iSearch := 5000000;
Cnt := GetTickCount64;
for j := 0 to 1000000 do
for i in [Low(MyData)..High(MyData)]-[iSearch] do
if i = iSearch then begin
Break;
end;
Caption := IntToStr(GetTickCount64 - Cnt);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
MyData: Array of Integer;
i, j , iSearch: Integer;
Cnt: QWord;
begin
SetLength(MyData, 100000000);
for i := Low(MyData) to High(MyData) do
MyData[i] := i;
iSearch := 5000000;
Cnt := GetTickCount64;
for j := 0 to 1000000 do
for i in [Low(MyData)..High(MyData)] do
if i = iSearch then begin
Break;
end;
Caption := IntToStr(GetTickCount64 - Cnt);
end;
Es ist aber nur ein Vorschlag/Wunsch, weil es in diesem Thread um Synatxvorschläge geht. Ich komme auch mit der bisherigen Pascal-Syntax klar
mschnell hat geschrieben:Nennt sich "case"