Stimmt, Integer ist ja 32bit
Aber @Meflin: Wie groß könnten denn die Werte max. werden? Weisst du das?
Weil dann könnte man Hagen's Methode "Count: Array[Byte] of Integer" etwas "erweitern", z.B. "Count: Array[0..10000] of Integer" könnte Werte zw. 0 und 10.000 erfassen. Dadurch kannst du dir nämlich das verschachtelte "Rumgeschleife" schenken.
Mit dem Problem, dass nur Werte gezählt werden sollen, die mehr als 1x in dem Array vorkommen: Könnte man das nicht so lösen, dass man nach dem Zähl-Durchlauf einfach prüft, welche Werte im Count-Array >= 1 sind und diese dann einfach um eins verringert?
Delphi-Quellcode:
var
Count:
Array[0..10000]
of Integer;
i: Integer;
begin
// Alles im Count-Array auf 0 setzen
FillChar (Count, Sizeof (Count), 0);
// Count anhand des Wertes von Data[i] erhöhen
for i := 0
to High (Data)
do
inc (Count[Data[i]]);
// Generell eins abziehen, wenn Count[i] >= 1
for i := 0
to High (Count)
do
if (Count[i] >= 1)
then
dec (Count[i]);
end;
Grüße,
Mario