Ab 10 Millionen kleiner Strings (2 oder 3 Zeichen) beginnts sich’s langsam (1-2 Sekunden) zu lohnen.
Vielleicht liegt’s an meiner Implementierung. Alles was über 10 Millionen Strings ist dauert bei meiner Kiste eh Jahre…
Hallo,
Ich hätte da auch ein Problem: sortByPos und radixSort haben beide void als Rückgabeformat und ich sehe auch kein Array außerhalb der beiden Methoden, das ich ändern könnte.
Könnte mir jemand einen Hinweis geben, wie ich das sortierte Array trotzdem zurückgebe?
tld;dr: Änderungen an Arrayeinträgen sind auch nach außen hin sichtbar.
Längere Erklärung:
Es gibt zwar in Java kein echtes call-by-reference, allerdings wird bei Objekten der Wert der Referenz übergeben (soll heißen: Die Referenz auf das Objekt wird per call-by-value übergeben). Das bedeutet, dass zwar nicht das Objekt selbst verändert werden kann, wohl aber sein Inhalt.
Da Arrays nichts anderes als Objekte sind, sind Änderungen an Arrayeinträgen auch außerhalb der Methode sichtbar.
Kurzer Beispiel:
public void foo(int[] array) {
array[0] = 0; // nach außen hin sichtbar
array = null; // nicht nach außen hin sichtbar, da es das Objekt selbst verändert
}
Auch ich hätte eine kleine Frage:
Müssen wirklich threads-viele Threads verwendet werden? Spätestens wenn es mehr Threads als zu sortierende Zeichenketten gibt, kann das doch nicht mehr sinnvoll sein.
Wenn #threads > array.length, dann kannst du #threads = array.length machen