Home » Tipps & Tricks » Algorithmen » Sortieren » SelectionSort

SelectionSort

SelectionSort ist ein Sortierverfahren, mit der eine Liste von Elementen sortiert werden kann.

Das Prinzip hinter diesem Algorithmus basiert darauf, die Liste in zwei Bereiche aufzuteilen: In einen bereits sortierten, der zuerst leer ist, und in einen unsortierten Bereich, der am Anfang alle Elemente der Liste enthält.

Bei der Durchführung wird das kleinste Element aus dem unsortierten Bereich an den Anfang des sortierten verschoben. Der sortierte Bereich wird dadurch größer, der unsortierte kleiner. Das Verschieben wird sooft durchgeführt, bis der unsortierte Bereich leer ist. Dadurch, dass immer das kleinste der verbliebenen Elemente an den Anfang des sortierten Bereichs verschoben wird, sind dort die Elemente aufsteigend sortiert.

Das „Verschieben“ geschieht durch Vertauschen der Positionen des zu verschiebenden Elements mit dem leeren Element am Anfang des sortierten Bereichs.

procedure SelectionSort(var A: array of Integer);
var
  i, j: Integer;
  pos, temp: Integer;
begin
  for i := Low(A) to High(A) - 1 do
  begin
    pos := i;
    for j := i + 1 to High(A) do
    begin
      if A[j] < A[pos] then
        pos := j;
    end;

    temp := A[i];
    A[i] := A[pos];
    A[pos] := temp;
  end;
end;

SelectionSort ist ein sehr einfaches, aber auch vergelichsweise langsames Sortierverfahren, jedoch wird die Anzahl der Vertauschungen minimiert. Weitere Informationen finden sich z.B. in der Wikipedia.