C# / Bubblesort-Code: Kann mir jemand erklären, wofür es zwei for-Schleifen gibt und wieso nach arr.Length -2?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Warum der Name Bubblesort?

Weil der aktuell größte Wert im Array aufsteigt, wie ein Blubberbläschen. Also, ich vertausche beginnend vorne, zwei Werte, wann immer ein größerer vor einem kleineren steht. Hierdruch bewege ich das größte Element ans Ende. (innere Schleife).

Nur habe ich damit natürlich die Sortierung nicht fertig, ich muß dann den zweitgrößten Wert nach hintern schieben, bis an die Endposition, dann den 3.-größten usw. - das ist die äußere Schleife.

Da ich bei 0 anfange zu zählen und mein letzter Vergleich das vorletzte Element und das letzte umfasst, halte ich logischerweise beim vorletzen Element an -> position<=Länge-2, oder eben position<Länge-1 als alternative Formulierung.

Die Umsetzung ist übrigens extrem ungünstig, weil die innere Schleife unnötig viele Durchläufe macht.


Kappaquii 
Beitragsersteller
 04.12.2019, 17:33

ah danke sehr, jetzt verstehe ich es!

LG