Junior — Middle
Ist es möglich, einen Sortieralgorithmus zu implementieren, der keinen zusätzlichen Speicher für Zwischendaten verwendet?
sobes.tech KI
Antwort von AI
Ja, es gibt Sortieralgorithmen, die keinen zusätzlichen Speicher für Zwischendaten verwenden — sie werden in-place-Algorithmen genannt.
Beispiele solcher Algorithmen:
- Bubblesort (Blasensortierung)
- Insertionsort (Einfügesortierung)
- Selection Sort (Auswahl-Sortierung)
- Quicksort (Schnellsortierung) — bei sorgfältiger Implementierung
- Heapsort (Hauptsortierung)
Diese Algorithmen ändern die Reihenfolge der Elemente direkt im ursprünglichen Array, ohne zusätzlichen Speicher für Kopien oder Hilfsstrukturen zu reservieren.
Beispiel für in-place Quicksort in Java:
public void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
private int partition(int[] arr, int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] <= pivot) {
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return i + 1;
}
Auf diese Weise ermöglichen in-place Sortierungen die Einsparung von Speicher, können aber manchmal langsamer oder weniger stabil sein als Sortierungen, die zusätzlichen Speicher verwenden.