Bubble Sort – Drei Varianten im Vergleich
Sortieralgorithmen sind mehr als technische Werkzeuge – sie sind Denkbewegungen mit Struktur. Hier werden drei Varianten des Bubble Sort vorgestellt, jeweils mit Pseudocode und didaktischer Reflexion.
🔁 1. Standardversion
function bubbleSortStandard(feld) {
for (i = 0; i < feld.length; i++) {
for (j = 0; j < feld.length - 1; j++) {
if (feld[j] > feld[j + 1]) {
temp = feld[j];
feld[j] = feld[j + 1];
feld[j + 1] = temp;
Output("Tausch bei Position " + j);
}
}
}
}
🧠 2. Optimierte Version mit Merker
function bubbleSortMitMerkung(feld) {
do {
merker = false;
for (i = 0; i < feld.length - 1; i++) {
if (feld[i] > feld[i + 1]) {
temp = feld[i];
feld[i] = feld[i + 1];
feld[i + 1] = temp;
merker = true;
Output("Tausch bei Position " + i); // beim Abtauchen
}
}
Output("Durchlauf beendet – Merker: " + merker); // beim Auftauchen
} while (merker == true);
Output("Feld ist durchsortiert.");
}
⚡ 3. Kombinierte Version mit Merker und Bereichsverkürzung
function bubbleSortKombiniert(feld) {
n = feld.length;
do {
merker = false;
for (i = 0; i < n - 1; i++) {
if (feld[i] > feld[i + 1]) {
temp = feld[i];
feld[i] = feld[i + 1];
feld[i + 1] = temp;
merker = true;
Output("Tausch bei Position " + i); // beim Abtauchen
}
}
Output("Durchlauf beendet – Merker: " + merker + ", Grenze: " + n); // beim Auftauchen
n = n - 1;
} while (merker == true);
Output("Feld ist durchsortiert.");
}
📊 Vergleich der Varianten
Variante | Vorteile | Nachteile |
---|---|---|
Standard | Einfach zu verstehen; konstante Struktur | Viele unnötige Durchläufe; ineffizient bei sortierten Feldern |
Mit Merker | Frühzeitiger Abbruch möglich; leicht visualisierbar | Mehr Vergleiche bei unsortierten Feldern |
Kombiniert | Effizient bei allen Feldzuständen; spart Vergleiche und Durchläufe | Didaktisch komplexer; schwerer zu visualisieren |
🦉 „Ein guter Algorithmus weiß, wann er aufhören darf – und wo er noch wirken muss.“