Insertionsort funktioniert ähnlich wie das Sortieren von Spielkarten in der Hand. Du nimmst eine Karte nach der anderen und steckst sie an die richtige Stelle in deine bereits sortierte Hand.
Beispiel:
Array: [5, 2, 4, 6, 1]
Schritt 1: Sortierter Teil: [5], nimm 2 → setze vor 5 → [2, 5, 4, 6, 1]
Schritt 2: Sortierter Teil: [2, 5], nimm 4 → setze zwischen 2 und 5 → [2, 4, 5, 6, 1]
Schritt 3: Sortierter Teil: [2, 4, 5], nimm 6 → bleibt → [2, 4, 5, 6, 1]
Schritt 4: Sortierter Teil: [2, 4, 5, 6], nimm 1 → setze an Anfang → [1, 2, 4, 5, 6]
#include <iostream> using namespace std; void insertionSort(int arr[], int n) { for (int i = 1; i < n; i++) { int key = arr[i]; // Das Element, das wir an die richtige Position einfügen wollen int j = i - 1; // Verschiebe alle Elemente, die größer als key sind, nach rechts while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } // Setze das key-Element an die richtige Position arr[j + 1] = key; } } int main() { int arr[] = {5, 2, 4, 6, 1}; int n = sizeof(arr) / sizeof(arr[0]); cout << "Unsortiertes Array: "; for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; insertionSort(arr, n); cout << "Sortiertes Array: "; for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; return 0; }