Wie groß können die Zahlen im Array werden ? Und wie viele Zahlen sind im Array gespeichert ?
Angenommen im Array sind nur zahlen zwischen 0 bis 255, dann kann man sehr effektiv so vorgehen:
Delphi-Quellcode:
var
Count: array[Byte] of Integer;
ZweitesArray: array of Byte;
I,Result: Integer;
begin
FillChar(Count, Sizeof(Count), 0);
for I := 0 to High(Data) do
Inc(Count[ZweitesArray[I]]);
Result := 0;
for I := 0 to High(ErstesArray) do
if Count[ErstesArray[I]] > 1 then
Inc(Result);
end;
Bei dieser Methode fallen zwei Schleifen mit Length(ErstesArray) + Length(ZweitesArray) an Durchläufen an.
Bei der Methode von Meflin fallen Length(ErstesArray) * Length(ZweitesArray) an Durchläufen an.
Angenommen Length(ErstesArray) == 1000 und Length(ZweitesArray) == 100;
1.) Methode == 1000 + 100 = 1100
2.) Methode == 1000 * 100 = 100000
Wenn du also den Zahlenbereich in den Arrays beschränken kannst dann solltest du meine Methode benutzen, da sie eine geringere mathematische Komplexität besitzt.
Gruß Hagen