Zu den Aufgaben vom 16.02.2021 ist ein komplettes Verzeichnis Sortieren in der ZIP-Datei Sortieren.zip zum Download verfügbar. Es ist ein fertiges BlueJ-Projekt.
Informiere dich in dem Wikipedia-Artikel über die Gaußsche Summenformel. Lies auch die Geschichte über den neunjährigen kleinen Gauß. Nach dieser Formel ergeben sich die folgenden Summen:
1 + 2 + 3 + 4 + 5 =
1 + 2 + ... + 99 + 100 =
1 + 2 + ... + 199 + 200 =
1 + 2 + ... + 999 + 1000 =
Hinweis: Diese Summenformel habe ich gestern in der Klasse 5B behandelt.
Wir betrachten noch einmal den Minsort-Algorithmus:
public void minsort() { int minpos; for (int i=0; i <= maxIndex; i++) { minpos = i; for (int k=i+1; k <= maxIndex; k++) if (feld[k] < feld[minpos]) minpos = k; if (minpos > i) vertausche(i, minpos); } // for i } // minsort
Bei einem Feld mit n Elementen gibt es n-1 Durchgänge durch das Feld. Mache dir diesen Zusammenhang bei einem kleinen Feld mit z.B. n=4 Elementen klar (maxIndex = 3):
Beim ersten Durchgang vergleicht man die Positionen 1 bis 3 mit Position 0. Beim zweiten Durchgang vergleicht man die Positionen 2 bis 3 mit Position 1. Beim dritten Durchgang vergleicht man die Positionen 3 (bis 3) mit Position 2.
Jetzt betrachten wir wieder das Feld mit n Elementen. Ergänze.
Die Gesamtzahl der Vergleiche ist dann A(n) = 1 + 2 + .
Mit der Gaußschen Summenformel ist dann A(n) = .
Dann ergibt sich
A(10.000) = .
A(20.000) = .
A(40.000) = .
Wenn man annimmt, dass die Anzahl der Vergleiche beim Sortieren eines zufällig gefüllten Feldes etwa proportional zum Zeitbedarf ist, dann ergibt sich etwa folgender Zusammenhang (Ergänze Verdopplung, Verdreifachung, o.a.!):