Wenn wir den Wikipedia-Pseudeo-Code mal nach Delphi übersetzen (das geht quasi 1:1, denn das riecht nach gedeutschtem Pascal)
Code:
prozedur SelectionSort( A : Liste sortierbarer Elemente )
n = Länge( A )
links = 0
wiederhole
min = links
für jedes i von links + 1 bis n wiederhole
falls A[ i ] < A[ min ] dann
min = i
ende falls
ende für
Vertausche A[ min ] und A[ links ]
links = links + 1
solange links < n
prozedur ende
in Delphi (aber falsch)
Delphi-Quellcode:
procedure SelectionSort( var A : TArray<Integer> );
var
n, i, links, min : Integer;
temp : Integer;
begin
n := Length( A );
links := 0; // soso, das erste Element hat den Index 0 :o)
repeat
min := links;
for i := links + 1 to n do
begin
if A[ i ] < A[ min ] then
min := i:
end;
temp := A[ links ];
A[ links ] := A[ min ];
A[ min ] := temp;
links := links + 1;
until not( links < n );
end;
und nun mal richtig
Delphi-Quellcode:
procedure SelectionSort( var A : TArray<Integer> );
var
n, i, links, min : Integer;
temp : Integer;
begin
n := High( A );
links := Low( A );
while links < n do
begin
min := links;
for i := links + 1 to n do
begin
if A[ i ] < A[ min ] then
min := i:
end;
if links <> min then
begin
temp := A[ links ];
A[ links ] := A[ min ];
A[ min ] := temp;
end;
links := links + 1;
end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)