Wie funktioniert der Quicksort-Algorithmus (mit Pseudocode)?

Antwort

Quicksort ist ein effizienter, rekursiver Sortieralgorithmus, der das Prinzip "Teile und herrsche" verwendet. Hier sind die Grundzüge des Quicksort-Algorithmus: 1. **Wähle ein Pivotelement**: Ein Element aus dem Array wird als Pivot ausgewählt. Es gibt verschiedene Strategien, das Pivot zu wählen, z.B. das erste Element, das letzte Element, ein zufälliges Element oder das Median-Element. 2. **Partitioniere das Array**: Ordne die Elemente des Arrays so um, dass alle Elemente, die kleiner als das Pivot sind, vor dem Pivot stehen, und alle Elemente, die größer als das Pivot sind, nach dem Pivot. Das Pivot befindet sich danach an seiner endgültigen Position. 3. **Rekursives Sortieren**: Wende den Quicksort-Algorithmus rekursiv auf die beiden Teilarrays an, die durch das Pivot-Element getrennt wurden. Hier ist ein Beispiel in Pseudocode: ```pseudocode function quicksort(array, low, high) if low < high // Partitioniere das Array und erhalte den Index des Pivots pivotIndex = partition(array, low, high) // Rekursiv auf die Teilarrays anwenden quicksort(array, low, pivotIndex - 1) quicksort(array, pivotIndex + 1, high) function partition(array, low, high) // Wähle das Pivot (hier das letzte Element) pivot = array[high] i = low - 1 for j = low to high - 1 if array[j] < pivot i = i + 1 swap array[i] with array[j] // Setze das Pivot an die richtige Position swap array[i + 1] with array[high] return i + 1 function swap(a, b) temp = a a = b b = temp ``` **Beispiel:** Angenommen, das Array ist `[10, 7, 8, 9, 1, 5]`. 1. Wähle das Pivot: `5` 2. Partitioniere das Array: - Nach der Partitionierung: `[1, 5, 8, 9, 10, 7]` - Pivot `5` ist an der richtigen Position. 3. Rekursiv auf die Teilarrays anwenden: - Linkes Teilarray: `[1]` (bereits sortiert) - Rechtes Teilarray: `[8, 9, 10, 7]` 4. Wiederhole den Prozess für das rechte Teilarray: - Wähle das Pivot: `7` - Nach der Partitionierung: `[1, 5, 7, 9, 10, 8]` - Pivot `7` ist an der richtigen Position. 5. Rekursiv auf die neuen Teilarrays anwenden: - Linkes Teilarray: `[8]` (bereits sortiert) - Rechtes Teilarray: `[9, 10]` (bereits sortiert) Am Ende ist das Array sortiert: `[1, 5, 7, 8, 9, 10]`. Quicksort hat eine durchschnittliche Zeitkomplexität von \(O(n \log n)\), kann aber im schlechtesten Fall \(O(n^2)\) erreichen, wenn das Pivot-Element ungünstig gewählt wird.

Frage stellen und sofort Antwort erhalten

Verwandte Fragen

Wie erstellt man ein Wurfsystem in Roblox Studio?

Um ein Skript in Roblox Studio zu erstellen, das es einem Spieler ermöglicht, ein Objekt zu werfen, kannst du folgendes Lua-Skript verwenden. Dieses Beispiel zeigt, wie man ein einfaches Wurfsyst... [mehr]

Wie kann man ein Script schreiben, damit man in Roblox Studio eine Waffe schießen kann?

Hier ist ein einfaches Beispiel für ein Skript, das eine Waffe in Roblox Studio schießen lässt. Dieses Skript geht davon aus, dass du bereits ein Werkzeug (Tool) und ein Part (Teil) f&... [mehr]

Welche Module werden aus PyQt6 für die grafische Oberfläche verwendet?

Für die Erstellung grafischer Oberflächen mit PyQt6 werden hauptsächlich folgende Module verwendet: 1. **QtWidgets**: Enthält alle grundlegenden GUI-Komponenten wie Fenster, Schal... [mehr]

Wann wird in der objektorientierten Programmierung der Konstruktor einer Klasse aufgerufen?

Der Konstruktor einer Klasse wird in der objektorientierten Programmierung aufgerufen, wenn eine neue Instanz (ein neues Objekt) dieser Klasse erstellt wird. Dies geschieht typischerweise durch die Ve... [mehr]

Welche Attribute gibt es in der objektorientierten Programmierung in einer Klasse?

In der objektorientierten Programmierung sind Attribute in einer Klasse die Variablen, die den Zustand eines Objekts beschreiben. Sie können verschiedene Typen haben, wie z.B. primitive Datentype... [mehr]

Wie programmiere ich in C?

Um mit der Programmierung in C zu beginnen, folge diesen Schritten: 1. **Installiere einen Compiler**: Du benötigst einen C-Compiler, um deinen Code zu kompilieren und auszuführen. Beliebte... [mehr]

Was sind die Grundlagen der C-Programmierung?

Die Grundlagen der C-Programmierung umfassen mehrere wichtige Konzepte und Elemente. Hier sind einige der wichtigsten: 1. **Syntax und Struktur**: - **Header-Dateien**: Diese enthalten Deklaration... [mehr]

Wie nennt man verschiedene Zeichenformate in SQL?

In SQL werden verschiedene Datentypen verwendet, um Zeichenketten zu speichern. Die gängigsten Zeichenformate sind: 1. **CHAR(n)**: Ein fester Zeichenketten-Datentyp, der genau n Zeichen speiche... [mehr]

Wie lassen sich Schleifen einfach erklären?

Eine Schleife ist ein Programmierkonstrukt, das es ermöglicht, einen bestimmten Codeblock wiederholt auszuführen, solange eine bestimmte Bedingung erfüllt ist. Es gibt verschiedene Arte... [mehr]

Wie funktioniert Heapsort?

Heapsort ist ein effizienter Vergleichssortieralgorithmus, der auf einem binären Heap-Datenstruktur basiert. Hier ist eine grundlegende Erklärung, wie Heapsort funktioniert: 1. **Heap-Bildu... [mehr]