Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Selection Sort hat Bugs...

  Alt 6. Sep 2006, 21:20
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.
  Mit Zitat antworten Zitat