Bubblesort
Der intuitive Sortieralgorithmus: zwei verschachtelte Schleifen, größere Werte blubbern nach oben. Einfach zu erklären, in der Praxis aber zu langsam: O(n²).
Bubblesort
Der intuitive Sortieralgorithmus. So einfach, dass Erstsemester ihn ohne nachzudenken hinschreiben können.
Die Idee
Geh durchs Array, vergleiche zwei benachbarte Elemente, tausche sie wenn sie in falscher Reihenfolge sind. Wiederhole bis nichts mehr getauscht wird.
Größere Elemente "blubbern" wie Luftblasen nach oben, daher der Name.
Implementierung
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}Komplexität
Zwei verschachtelte Schleifen über Elemente:
| Fall | Vergleiche | Tauschungen |
|---|---|---|
| Worst Case (umgekehrt sortiert) | ||
| Average Case | ||
| Best Case (sortiert, mit Early-Exit) |
→ O(n²) im Worst und Average Case.
Eigenschaften
- ✅ In-Place: braucht nur O(1) Zusatzspeicher
- ✅ Stabil: gleiche Werte behalten ihre relative Reihenfolge
- ❌ Lahm: bei großen Arrays unbrauchbar
Wann sinnvoll?
In der Praxis: fast nie. Bubblesort wird hauptsächlich als didaktisches Beispiel verwendet, weil er so einfach zu erklären ist. Selbst für sehr kleine Arrays nutzt man eher Insertion Sort (gleiches O(n²), aber in der Praxis ~2× schneller).