10.4. Sortieralgorithmen history menue

  1. Bubblesort
  2. Simplesort
  3. Selectionsort
  4. Insertionsort
  5. Shellsort
    6. Quicksort
  7. Bucketsort


Kampf dem Chaos history menue scroll up

Das Problemfeld ist schnell umrissen. Gegeben sei ein Array in bester Unordnung. Gesucht ist ein Array in bester Ordnung. Bleibt die Frage: Wie bringt man System in den Datendschungel?
Damit wären wir bei einer der grundlegendsten Aufgaben der Informatik überhaupt, nämlich Daten zu sortieren. Man stelle sich einen Zugfahrplan vor, der die Abfahrtszeiten dem Zufall überlässt. Allein ein Wörterbuch würde uns den letzten Nerv rauben, wenn die eingetragenen Begriffe in ungeordneter Reihenfolge vorlägen.

Um es gleich vorweg zu schicken, für ein Feld von 25 Elementen benötigt man keinen Sortieralgorithmus. Das erledigt man auf einem Blatt Papier schneller, als der Rechner überhaupt gebootet hat. Handelt es sich jedoch um Arrays mit mehreren tausend Elementen, dann ist man ohne ausgeklügelte Sortieralgorithmen verloren. Wir wollen uns in den folgenden Abschnitten die gebräuchlichsten Verfahren anschauen. Die Kette der Sortieralgorithmen ist inzwischen sehr lang, und wer detailierte Informationen benötigt, der sei auf die Seite www.sortieralgorithmen.de verwiesen.

Genug der Vorrede:

Sortieralgorithmen

Grundlage für all unsere Betrachtungen soll ein kleines Konstantenfeld mit 25 Einträgen sein, das wir bereits in der FormCreate-Procedure an ein Variablenfeld übergeben. (Denkbar wäre natürlich auch ein Feld von Zufallszahlen.) Dieses Variablenfeld soll uns dann als Experimentier-Array für verschiedene Sortieralgorithmen dienen.
Wir wollen an dieser Stelle vereinbaren, dass bei allen Algorithmen, die wir im folgenden betrachten, stets aufsteigend sortiert werden soll.


 

const
  size = 24;

type
  feld = array[0..size] of integer;

const
  zahl_k: feld = (55,49,77,23,15,81,84,97,39,28,15,93,62,17,51,7,43,84,25,69,20,41,28,65,72);

var
  Form1: TForm1;
  zahl: feld;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
  zahl:=zahl_k;
  for i:=0 to size do lstUnsort.Items.Add(IntToStr(zahl[i]));
end;

// Ausgabe der sortierten Liste
procedure printList(var zahl: feld);
var i: integer;
begin
  Form1.lstSort.Clear;
  for i:=0 to size do Form1.lstSort.Items.Add(IntToStr(zahl[i]))
end;