Herzlich willkommen in der Delphi-PRAXiS, NoOoB.
Zusätzlich zum Link von Klaus möchte ich dir noch zwei weitere Links an Herz legen:
Daniel hat vor längerer Zeit einmal ein
Tutorial verfasst, in dem verschiedene Sortierverfahren beispielhaft implementiert sind - und auch
WikiPedia hat umfangreiche Informationen zu diesem Thema.
Zitat von
NoOoB:
... bzw. ich meinte SelectionSort zu haben ...
Du hast einen event handler mit deinem Code bestückt. Besser ist es du verpackst deine Sortierverfahren in eine Funktion oder Prozedur. Im event handler OnClick() eines Button ist dein Code nur die Hälfte wert.
Freundliche Grüße vom marabu
PS: In deinem Code werden die Grenzen für die innere und äußere Schleife falsch gesetzt und die Zahl der notwendigen Vertauschungen ist unnötig hoch.
Delphi-Quellcode:
function SelectionSort(var ida: TIntegerDynArray): Integer;
var
iMin, iOuter, iInner, iTemp, iCount: Integer;
begin
iCount := 0;
for iOuter := Low(ida) To Pred(High(ida)) do
begin
iMin := iOuter;
for iInner := Succ(iOuter) to High(ida) Do
if ida[iInner] < ida[iMin] then
iMin := iInner;
if iMin <> iOuter then
begin
iTemp := ida[iMin];
ida[iMin] := ida[iOuter];
ida[iOuter] := iTemp;
Inc(iCount);
end
end;
Result := iCount;
end;
Dieser Code ist nur getippt und nicht getestet.