Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Klausur SoSe 09
Hi zusammen,
ich habe mal eine Frage zur Lösung die hier im Forum zu finden ist:
https://fsi.informatik.uni-erlangen.de/dw/pruefungen/bachelor/aud/loesungss09
Und zwar betrifft es die Aufgabe 4c) genau gesagt die Implementierung der Methode radixSort.
In der Lösung steht dazu:
public static void radixSort(int[] array) {
for (int i = 0; i < 5; i++) {
sortPos(array, 0, array.length, i);
}
}
Müsste i aber eigentlich nicht bei 4 starten und bis i>=0 laufen?
Denn wir fangen doch hier bei der letzten Stelle der Postleitzahl an und betrachten diese und die Methode getDigit, die wir weiter oben aufrufen gibt uns ja die Zahl an dieser Stelle zurück und wenn wir getDigit mit (90480, 0) aufrufen, dann wir uns ja die “9” zurückgegeben aber wir wollen doch die letzte Zahl im ersten Radixsortierlauf haben?
Vielen Dank für eure Hilfe
Nachdem getDigit() zumindest in der Lösung nicht gegeben ist, behaupte ich jetzt einfach mal, dass diese in deinem Beispiel 0 statt 9 als Ergebnis liefert, die letzte Ziffer also den Index 0 hat. Macht auch Sinn, wenn man überlegt, wie man die Methode implementieren würde, denn die i-te Ziffer bekommt man in diesem Fall, indem man einfach i Mal durch 10 teilt und das Ergebnis modulo 10 nimmt.
In der Angabe steht aber folgendes:
getDigit(int n, int pos) die Stelle pos der Zahl n (von links nach rechts gelesen) zurückliefert.
also wenn ich getDigit(90480, 0) aufrufe kommt doch die 9 zurück oder verstehe ich was falsch?