Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#4

Re: Doppelte Werte in einem Array zählen...

  Alt 30. Okt 2004, 15:21
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
  Mit Zitat antworten Zitat