Shell Sort

Bei dem Begriff "Shell" denkst Du vermutlich als Erstes an die deutsche Übersetzung "Muschel" – was teilweise sicherlich auch der Tankstelle geschuldet ist, die das Symbol neben ihrem Namen als Logo verwendet. Mit Shell Sort haben jedoch beide absolut gar nichts zu tun. 

Los geht’s

Scanne und löse jedes Fach mit AI

Teste unseren Hausaufgabenhelfer gratis Homework Helper
Avatar

Lerne mit Millionen geteilten Karteikarten

Leg kostenfrei los

Schreib bessere Noten mit StudySmarter Premium

PREMIUM
Karteikarten Spaced Repetition Lernsets AI-Tools Probeklausuren Lernplan Erklärungen Karteikarten Spaced Repetition Lernsets AI-Tools Probeklausuren Lernplan Erklärungen
Kostenlos testen

Geld-zurück-Garantie, wenn du durch die Prüfung fällst

Did you know that StudySmarter supports you beyond learning?

SS Benefits Icon

Find your perfect university

Get started for free
SS Benefits Icon

Find your dream job

Get started for free
SS Benefits Icon

Claim big discounts on brands

Get started for free
SS Benefits Icon

Finance your studies

Get started for free
Sign up for free and improve your grades

Review generated flashcards

Leg kostenfrei los
Du hast dein AI Limit auf der Website erreicht

Erstelle unlimitiert Karteikarten auf StudySmarter

StudySmarter Redaktionsteam

Team Shell Sort Lehrer

  • 8 Minuten Lesezeit
  • Geprüft vom StudySmarter Redaktionsteam
Erklärung speichern Erklärung speichern
Melde dich kostenlos an, um Karteikarten zu speichern, zu bearbeiten und selbst zu erstellen.
Leg jetzt los Leg jetzt los
  • Geprüfter Inhalt
  • Letzte Aktualisierung: 11.04.2023
  • 8 Minuten Lesezeit
Inhaltsverzeichnis
Inhaltsverzeichnis
  • Geprüfter Inhalt
  • Letzte Aktualisierung: 11.04.2023
  • 8 Minuten Lesezeit
  • Inhalte erstellt durch
    Lily Hulatt Avatar
  • überprüft von
    Gabriel Freitas Avatar
  • Inhaltsqualität geprüft von
    Gabriel Freitas Avatar
Melde dich kostenlos an, um Karteikarten zu speichern, zu bearbeiten und selbst zu erstellen.
Erklärung speichern Erklärung speichern

Danke für dein Interesse an Audio-Lernen!

Die Funktion ist noch nicht ganz fertig, aber wir würden gerne wissen, warum du Audio-Lernen bevorzugst.

Warum bevorzugst du Audio-Lernen? (optional)

Feedback senden
Als Podcast abspielen 12 Minuten

Stattdessen handelt es sich bei Shell Sort um einen Sortieralgorithmus. Was dabei die Besonderheiten sind und wie der Algorithmus funktioniert, erfährst Du hier.

Teste dein Wissen mit Multiple-Choice-Karteikarten

1/3

Wann wurde Shell Sort entwickelt?

1/3

Ergänze Shell Sort ist ein _____ Sortierverfahren.

1/3

Wahr oder falschShell Sort ist im Gegensatz zu Insertion Sort parallelisierbar.

Weiter

Shell Sort Beschreibung

Der Shell Sort oder auch Shellsort Algorithmus basiert auf Insertion Sort, ist jedoch das schnellere Verfahren. Das Grundprinzip ist es, Datenmengen in Teilmengen zu zerlegen und diese mit Insertion Sort zu sortieren. Dadurch erhältst Du bei jedem Iterationsschritt eine neue Grobsortierung. Die Teilmengen werden mit jedem Schritt kleiner, bis Du schließlich eine vollständig sortierte Liste bekommst.

Shell Sort wurde 1959 von Donald. L. Shell entwickelt.

Shell Sort Definition

Shell Sort ist ein instabiler, vergleichsbasierter Sortieralgorithmus, der Datenmengen iterationsweise in unterschiedlich große Teilbereiche zerlegt und diese immer wieder mit Insertion Sort sortiert.

Shell Sort Algorithmus

Wie Du bei Shellsort vorgehst, lässt sich am besten an einem Beispiel zeigen. Gegeben ist folgendes Array:

52849723

Das Grundprinzip bei Shellsort ist es, eine Datenmenge in kleinere Teilmengen zu zerteilen. Die Länge der Teilmenge bestimmt dabei die Laufzeit des Algorithmus mit – Du solltest die einzelnen Teilbereiche also weder zu groß noch zu klein wählen.

In diesem Beispiel werden die Längen 4, 2 und 1 gewählt.

Die Länge der Teilmenge wird im englischen häufig als "gap" oder "interval" bezeichnet. Auch im Deutschen kannst Du den Begriff Intervall oder Intervall-Länge verwenden.

1. Iteration

Im ersten Durchlauf wird das Array in zwei Arrays mit jeweils einer Länge von 4 geteilt. Diese schreibst Du am besten untereinander – das macht es übersichtlicher.

5284
9723

Jetzt sortierst Du die einzelnen Spalten nach dem Insertion Sort – also von oben nach unten. Dabei musst Du die 8 und die 2 und die 4 mit der 3 vertauschen.

5223
9784

Anschließend fügst Du die Teilbereiche wieder zu einem Array zusammen:

52239784

2. Iteration

Nun kommt der zweite Durchlauf, wobei diesmal die Länge 2 für die Teillisten gewählt wird. Auch diese Teillisten schreibst Du wieder untereinander und sortierst sie spaltenweise mit Insertion Sort.

52
23
97
84

Nach dem Sortieren erhältst Du folgendes Zwischenergebnis.

22
53
84
97

Dieses führst Du wieder zu einer Gesamtliste zusammen.

22538497

Schließe dich mit deinen Freunden zusammen, und habt Spaß beim Lernen

Kostenlos registrieren
Shell Sort

3. Iteration

Beim dritten Durchlauf wählst Du jetzt eine Länge von 1 für die einzelnen Teilbereiche. Anders gesagt: Du sortierst die übrige Liste einfach mit Insertion Sort. Da die Liste schon teilweise vorsortiert ist, dauert das Sortieren hier in der Regel nicht mehr allzu lange.

Als Ergebnis erhältst Du nach den letzten Vertauschungen die sortierte Liste:

22345789

Und fertig ist Dein sortiertes Array nach Shell Sort!

Shell Sort Vorgehensweise

Noch einmal kurz und knapp, wie gehst Du beim Shellsort Algorithmus vor:

  • Lege die Länge für die Teilmengen/Intervalle fest
  • Zerteile die unsortierte Datenmenge in Teilmengen und sortiere diese mit Insertion Sort
  • Führe das Ganze so lange durch, bis die Datenmenge vollständig sortiert ist

Shell Sort Struktogramm

Wie könnte ein mögliches Struktogramm bei Shell Sort aussehen?

Shell Sort Struktogramm Beispiel StudySmarter

Möchstest du diese und noch viele weitere tolle Infografiken sehen?

Jetzt kostenlos anmelden
Abb. 1 Struktogramm für Shell Short

Shell Sort Komplexität

Bei der Komplexität von Shell Sort müssen die Laufzeit (Zeitkomplexität) und der zusätzlich benötigte Speicher (Platzkomplexität) betrachtet werden.

Finde relevante Lernmaterialien und bereite dich auf den Prüfungstag vor

Kostenlos registrieren
Shell Sort

Shell Sort Laufzeit

Wie effizient Shell Sort ist, hängt stark von der Wahl der Länge der Teilmengen ab. Doch warum verwendet man überhaupt Shell Sort, wenn es sich dabei im Prinzip auch einfach nur um den Insertion Sort Algorithmus handelt? Durch die Grobsortierung des Shell Sort bekommst Du eine deutlich bessere Laufzeit als bei Insertion Sort.

Shell Sort Worst Case

Im Worst-Case, also bei einer eher schlecht gewählten Intervall-Länge, hat Shell Sort eine Laufzeit von O(n2),

Shell Sort Best Case

Sowohl im Best-Case als auch im Average-Case hat Shell Sort hingegen eine Laufzeit von O(n log n).

Mehr zu den Unterschieden zwischen Shell Sort und Insertion Sort findest Du in einem eigenen Abschnitt weiter unten in dieser Erklärung.

Shell Sort Platzkomplexität

Shellsort läuft in-place, also ohne zusätzlich benötigten Speicherplatz, ab. Somit ist die Platzkomplexität konstant und beträgt O(1).

Shell Sort – Weitere Begrifflichkeiten

Im Folgenden werden noch weitere wichtige Begriffe rund um Shellsort erläutert.

Shell Sort stabil – instabil

Durch das Unterteilen in Teilmengen und das Sortieren dieser Teillisten untereinander mit Insertion Sort, kann die ursprüngliche Reihenfolge bei gleichen Elementen nicht gewährleistet werden. Der Algorithmus ist also instabil.

Shell Sort vergleichsbasiert

Shell Sort ist ein vergleichsbasiertes Sortierverfahren, da immer zwei Elemente miteinander verglichen werden, um über ihre Anordnung in der Datenmenge zu entscheiden.

Bleib immer am Ball mit deinem smarten Lernplan

Kostenlos registrieren
Shell Sort

Shell Sort Parallelisierbarkeit

Im Gegensatz zum ursprünglichen Insertion Sort ist Shellsort parallelisierbar. Dafür lagerst Du die einzelnen Teilmengen im Grunde einfach auf Prozessoren aus. Dort werden die Daten parallel mit einem eigenen Shellsort sortiert. Anschließend fügst Du die sortierten Teilmengen wieder zu einer kompletten Liste zusammen, wobei die Daten noch mal abschließend sortiert werden.

Shell Sort Zusammenfassung

Das bisher Gelernte findest Du hier auf einem Blick zusammengefasst:

Best-CaseAverage-CaseWorst-CasePlatz-komplexitätStabiles Verfahrenvergleichs-basiertIn-PlaceParallelisier-barkeit
O(n log n)O(n log n)O(n2)O(1)NeinJaJaJa

Insertion Sort vs. Shell Sort

Shell Sort basiert auf dem Insertion Sort Sortierverfahren, was dabei die Unterschiede sind, kannst Du der folgenden Tabelle entnehmen. Wichtig zu wissen ist noch, dass Shell Sort grundsätzlich entwickelt wurde, um die Ineffizienz des Insertion Sorts zu verbessern. Ziel war es also, die große Anzahl an Vergleichen zu reduzieren.

EigenschaftenShell SortInsertion Sort
LaufzeitBest-Case: O(n log n)Average-Case: O(n log n)Worst-Case: O(n2)Best-Case: O(n)Average-Case: O(n2)Worst-Case: O(n2)
PlatzkomplexitätO(1)O(1)
StabilitätInstabiles VerfahrenStabiles Verfahren
VergleichsbasiertJaJa
ParallelisierbarkeitJaNein
VorteileBenötigt weniger Tauschoperationen als Insertion SortEinfach zu implementieren
Am effizientesten für mittelgroße DatenmengenAlgorithmus ist leicht verständlich
NachteilEffizienz ist stark abhängig vom gewählten IntervallIneffizient bei großen Datenmengen

Genaueres zum Insertion Sort kannst Du in der gleichnamigen Erklärung auf StudySmarter nachlesen.

Lerne mit Millionen geteilten Karteikarten

Kostenlos registrieren
Shell Sort

Shell Sort Java

Nun folgen noch zwei Code-Beispiele für eine mögliche Implementierung – in Java könnte das wie folgt aussehen:

import java.util.Arrays;

class ShellSort {

    // Elemente mit den Intervallen von n/2, n/4, n/8, ... neu anordnen
  void shellSort(int array[], int n) {
  for (int interval = n / 2; interval > 0; interval /= 2) {

    for (int i = interval; i < n; i += 1) {
        int temp = array[i];
        int j;
    
            for (j = i; j >= interval && array[j - interval] > temp; j -= interval) {
                array[j] = array[j - interval];
                }

            array[j] = temp;
            }
    }
  }

// Treibercode

public static void main(String args[]) {
    // zu sortierende Datenmenge eingeben
    int[] data = { 5, 2, 8, 4, 9, 7, 2, 3 };
    int size = data.length;
    ShellSort ss = new ShellSort();
    ss.shellSort(data, size);

    // Ausgabe hinzufügen
    System.out.println("Sortiertes Array: " " + Arrays.toString(data));
    }
}

Ausgabe:

Sortiertes Array: 2 2 3 4 5 7 8 9 

Shell Sort C

In C könnte Shell Sort hingegen so implementiert werden.

Als Ergebnis erhältst Du wieder das gleiche sortierte Array wie bei der Java-Implementierung.

#include 
void shellSort(int array[], int n) {

    // Elemente mit den Intervallen von n/2, n/4, n/8, ... neu anordnen
    for (int interval = n / 2; interval > 0; interval /= 2) {
        
        for (int i = interval; i < n; i += 1) {
            int temp = array[i];
            int j;
        
            for (j = i; j >= interval && array[j - interval] > temp; j -= interval) {
            array[j] = array[j - interval];
            }

        array[j] = temp;
        }
    }
}

// Array ausgeben

void printArray(int array[], int size) {
    for (int i = 0; i < size; ++i) {
        printf("%d  ", array[i]);
        }

    printf("\n");
}

// Treibercode

int main() {

  int data[] = {5, 2, 8, 4, 9, 7, 2, 3};
  int size = sizeof(data) / sizeof(data[0]);
  shellSort(data, size);

  printf("Sortiertes Array: \n");
  printArray(data, size);
}

Shell Sort – Das Wichtigste

  • Shell Sort Beschreibung: Shell Sort ist ein instabiler, vergleichsbasierter Sortieralgorithmus, der Datenmengen iterationsweise in unterschiedlich große Teilbereiche zerlegt und diese immer wieder mit Insertion Sort sortiert.
  • Shell Sort Komplexität: Shell Sort besitzt im Best-Case und Average-Case eine Laufzeit von O(n log n) und im Worst-Case eine Laufzeit von O(n2). Die Platzkomplexität ist konstant und beträgt O(1).
  • Insertion Sort vs. Shell Sort:
    • Shell Sort ist im Vergleich zu Insertion Sort parallelisierbar.
    • Beim Shell Sort werden weniger Tauschoperationen benötigt, was den Algorithmus effizienter macht.

Nachweise

  1. Geeksforgeeks.org: ShellSort. (22.11.2022)
  2. Dr. Russ Miller (2017). Implementation Of Parallel Shell Sort Using MPI. cse.buffalo.edu (22.11.2022)
Häufig gestellte Fragen zum Thema Shell Sort

Ist Shell Sort stabil? 

Shell Sort ist kein stabiler Sortieralgorithmus, da nicht gewährleistet werden kann, dass die Reihenfolge gleicher Elemente beim Partitionieren und Sortieren erhalten bleibt. 

Wie funktioniert Shell Sort? 

Shell Sort teilt Datenmengen nach verschiedenen Intervall-Längen in Teilmengen auf und sortiert diese mit Insertion Sort solange, bis eine vollständig sortierte Liste entsteht.

Was ist Shell Sort? 

Shell Sort ist ein instabiler, vergleichsbasierter Sortieralgorithmus, der Datenmengen iterationsweise in unterschiedlich große Teilbereiche zerlegt und diese immer wieder mit Insertion Sort sortiert. 

Erklärung speichern
Wie stellen wir sicher, dass unser Content korrekt und vertrauenswürdig ist?

Bei StudySmarter haben wir eine Lernplattform geschaffen, die Millionen von Studierende unterstützt. Lerne die Menschen kennen, die hart daran arbeiten, Fakten basierten Content zu liefern und sicherzustellen, dass er überprüft wird.

Content-Erstellungsprozess:
Lily Hulatt Avatar

Lily Hulatt

Digital Content Specialist

Lily Hulatt ist Digital Content Specialist mit über drei Jahren Erfahrung in Content-Strategie und Curriculum-Design. Sie hat 2022 ihren Doktortitel in Englischer Literatur an der Durham University erhalten, dort auch im Fachbereich Englische Studien unterrichtet und an verschiedenen Veröffentlichungen mitgewirkt. Lily ist Expertin für Englische Literatur, Englische Sprache, Geschichte und Philosophie.

Lerne Lily kennen
Inhaltliche Qualität geprüft von:
Gabriel Freitas Avatar

Gabriel Freitas

AI Engineer

Gabriel Freitas ist AI Engineer mit solider Erfahrung in Softwareentwicklung, maschinellen Lernalgorithmen und generativer KI, einschließlich Anwendungen großer Sprachmodelle (LLMs). Er hat Elektrotechnik an der Universität von São Paulo studiert und macht aktuell seinen MSc in Computertechnik an der Universität von Campinas mit Schwerpunkt auf maschinellem Lernen. Gabriel hat einen starken Hintergrund in Software-Engineering und hat an Projekten zu Computer Vision, Embedded AI und LLM-Anwendungen gearbeitet.

Lerne Gabriel kennen

Entdecke Lernmaterialien mit der kostenlosen StudySmarter App

Kostenlos anmelden
1
Über StudySmarter

StudySmarter ist ein weltweit anerkanntes Bildungstechnologie-Unternehmen, das eine ganzheitliche Lernplattform für Schüler und Studenten aller Altersstufen und Bildungsniveaus bietet. Unsere Plattform unterstützt das Lernen in einer breiten Palette von Fächern, einschließlich MINT, Sozialwissenschaften und Sprachen, und hilft den Schülern auch, weltweit verschiedene Tests und Prüfungen wie GCSE, A Level, SAT, ACT, Abitur und mehr erfolgreich zu meistern. Wir bieten eine umfangreiche Bibliothek von Lernmaterialien, einschließlich interaktiver Karteikarten, umfassender Lehrbuchlösungen und detaillierter Erklärungen. Die fortschrittliche Technologie und Werkzeuge, die wir zur Verfügung stellen, helfen Schülern, ihre eigenen Lernmaterialien zu erstellen. Die Inhalte von StudySmarter sind nicht nur von Experten geprüft, sondern werden auch regelmäßig aktualisiert, um Genauigkeit und Relevanz zu gewährleisten.

Erfahre mehr
StudySmarter Redaktionsteam

Team Informatik Lehrer

  • 8 Minuten Lesezeit
  • Geprüft vom StudySmarter Redaktionsteam
Erklärung speichern Erklärung speichern

Lerne jederzeit. Lerne überall. Auf allen Geräten.

Kostenfrei loslegen

Melde dich an für Notizen & Bearbeitung. 100% for free.

Schließ dich über 22 Millionen Schülern und Studierenden an und lerne mit unserer StudySmarter App!

Die erste Lern-App, die wirklich alles bietet, was du brauchst, um deine Prüfungen an einem Ort zu meistern.

  • Karteikarten & Quizze
  • KI-Lernassistent
  • Lernplaner
  • Probeklausuren
  • Intelligente Notizen
Schließ dich über 22 Millionen Schülern und Studierenden an und lerne mit unserer StudySmarter App!
Sign up with GoogleSign up with Google
Mit E-Mail registrieren

Schließ dich über 30 Millionen Studenten an, die mit unserer kostenlosen StudySmarter App lernen

Die erste Lern-App, die wirklich alles bietet, was du brauchst, um deine Prüfungen an einem Ort zu meistern.

Intent Image
  • Intelligente Notizen
  • Karteikarten
  • AI-Assistent
  • Lerninhalte
  • Probleklausuren