Blase sortieren
- Blasen-Sortieralgorithmus
- Beispiel für einen Blasensortierungsalgorithmus
- Implementierung des Bubble-Sort-Algorithmus
- Komplexität des Bubble-Sort-Algorithmus
Bubble Sort ist ein einfacher Sortieralgorithmus. Er funktioniert durch den wiederholten Vergleich benachbarter Elemente und deren Vertauschung, wenn sie in der falschen Reihenfolge sind. Durch die wiederholten Vergleiche wird das kleinste/größte Element an das Ende des Arrays geblasen, daher heißt dieser Algorithmus Bubble-Sort. Obwohl er ineffizient ist, stellt er dennoch die Grundlage für Sortieralgorithmen dar.
Blasen-Sortieralgorithmus
Nehmen wir an, dass wir ein unsortiertes Array A[]
mit n Elementen haben.
-
Beginnen Sie mit dem Paar der ersten beiden Elemente (
A[0]
undA[1]
), vergleichen Sie ihre Werte und vertauschen Sie sie, wenn sie nicht in der richtigen Reihenfolge sind. Machen Sie dasselbe für das nächste Paar (A[1]
&A[2]
) und verfahren Sie ähnlich für den Rest des Arrays. Das kleinste/größte Element befindet sich nach diesem Schritt an der letzten Position. -
Wiederholen Sie die obigen Schritte
(n-2)
Mal für die restlichen Iterationen. Verringern Sie die Array-Größe jedes Mal um eins, da das letzte Element bereits sortiert ist. Das kleinste/größte Element in dieser Iteration rückt an die äußerste rechte Position.
Schritt 1 im obigen Algorithmus wird auch als Durchlauf bezeichnet. Um ein Array der Größe n zu sortieren, sind n-1
Durchgänge erforderlich.
Beispiel für einen Blasensortierungsalgorithmus
Angenommen, wir haben ein Array: (5,3,4,2,1)
. Wir werden es mit dem Blasensortierungsalgorithmus sortieren.
- Erster Durchlauf:
(5 3 4 2 1) | → | (3 5 4 2 1) | (3 < 5 vertauscht) |
(3 5 4 2 1) | → | (3 4 5 2 1) | (4 < 5 vertauscht) |
(3 4 5 2 1) | → | (3 4 2 5 1) | (2 < 5 vertauscht) |
(3 4 2 5 1) | → | (3 4 2 1 5) | (1 < 5 vertauscht) |
- Zweiter Durchgang:
(3 4 2 1 5) | → | (3 4 2 1 5) | |
(3 4 2 1 5) | → | (3 2 4 1 5) | (2 < 4 vertauscht) |
(3 2 4 1 5) | → | (3 2 1 4 5) | (1 < 4 vertauscht) |
- Dritter Durchgang:
(3 2 1 4 5) | → | (2 3 1 4 5) | (2 < 3 vertauscht) |
(2 3 1 4 5) | → | (2 1 3 4 5) | (1 < 3 vertauscht) |
- Vierter Durchgang:
(2 1 3 4 5) | → | (1 2 3 4 5) | (1 < 2 vertauscht) |
Wir erhalten das sortierte Array nach dem vierten Durchlauf - (1 2 3 4 5)
Implementierung des Bubble-Sort-Algorithmus
#include <iostream>
using namespace std;
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
}
int main() {
int n = 5;
int arr[5] = {5, 3, 4, 2, 1};
cout << "Input array: ";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << "\n";
bubble_sort(arr, n); // Sort elements in ascending order
cout << "Output array: ";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << "\n";
}
Komplexität des Bubble-Sort-Algorithmus
Zeitkomplexität
- Durchschnittlicher Fall
Im Durchschnitt werden n-i
Vergleiche im lten
Durchlauf von Bubble Sort durchgeführt. Wenn es also n Durchläufe gibt, dann kann die durchschnittliche Zeitkomplexität gegeben sein durch
(n-1) + (n-2) + (n-3) ..... + 1 = n*(n-1)/2
Die Zeitkomplexität liegt also in der Größenordnung von O(n2).
- Schlimmster Fall
Der schlechteste Fall tritt ein, wenn das Array umgekehrt sortiert ist und die maximale Anzahl von Vergleichen und Vertauschungen durchgeführt werden muss.
Die Zeitkomplexität im schlimmsten Fall ist O(n2).
- Bester Fall
Der beste Fall tritt ein, wenn das Array bereits sortiert ist, und dann sind nur N Vergleiche erforderlich.
Die Zeitkomplexität im besten Fall ist O(n)
.
Raumkomplexität
Die Platzkomplexität für diesen Algorithmus ist O(n)
, da außer einer temporären Variablen kein zusätzlicher Speicher benötigt wird.
Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.
LinkedIn