Selectionsort

Selectionsort ist ähnlich einfach zu verstehen wie Insertionsort, jedoch ein wenig flexibler in der Anwendung. Aus dem Gesamtfeld werden Elemente entnommen und direkt eingefügt. Das Gesamtfeld wird auf seiner gesamten Breite verändert.

Selectionsort

Ablauf:

Finde das kleinste Element in der Gesamtmenge und tausche es mit dem Element an der ersten (oder letzten) Stelle. Anschließend wird das zweitkleinste Element an die zweite Stelle in der Gesamtmenge sortiert. Das Verfahren wird analog weitergeführt, bis das gesamte Feld durchlaufen wurde.

Implementieren Sie den Selectionsort in Matlab und geben Sie die Anzahl der Vergleichsvorgänge, sowie die Anzahl der Vertauschungen aus.

 

Lösung:

Selectionsort

function W = selectionSort(W)
swaps = 0;
vergleiche = 0;
n = length(W);

for ii=1:n-1
nextElement = ii;

for jj = ii+1:n
vergleiche = vergleiche+1;

if W(nextElement) > W(jj)
nextElement = jj;
end
end

if ~(nextElement == ii)
zw = W(ii);
W(ii) = W(nextElement);
W(nextElement) = zw;
swaps = swaps+1;
end
end

disp([num2str(vergleiche) ' ist die Anzahl der Vergleiche']);
disp([num2str(swaps) ' ist die Anzahl der Vertauschungen']);