yO!
Das kostet natürlich mehr Speicher.
Bei einer angenommen Stringlänge von 50 Zeichen und 1.000.000
Einträgen wären das dann 2 x 500 x 1.000.000 Byte
95,4 MB
Keine Stringlänge! Jeweils ein Byte!
Alex
Hallo Alex,
Hab ich das richtig verstanden?! Du hast ein Array mit 1.000.000 Elementen und der Typ eines Elements ist ein Byte. Wenn dem so ist, dann mach doch einfach ein Array mit 256 Einträgen und zähle in einem Eintrag die Anzahl der gefundenen Werte. D.h. wenn die Daten etwa wie folgt aussehen:
1, 2, 3, 4, 3, 3, 1, 0
würde das Array für die ersten fünf Werte wie folgt aussehen:
[1, 2, 1, 3, 1, …]
Nun kannst Du einfach sortieren, durch Ausgabe des Array
0, 1, 1, 2, 3, 3, 3, 4,
Die Array-Elemente geben an, wie oft eine Zahl ausgegeben werden soll.
Zum „sortieren“ ist die Laufzeite n (wow linear!
) die Ausgabe dann c*n mit c