Thema: QuickSort

Einzelnen Beitrag anzeigen

Benutzerbild von nothin
nothin

Registriert seit: 18. Okt 2003
21 Beiträge
 
#1

QuickSort

  Alt 6. Jan 2004, 00:35
Servus Leute,

ich sitz daran schon eine halbe Ewigkeit und kriege es nicht raus, warum "mein" QuickSort es nicht schafft zufällige Zahlen aus einem Array zu sortieren. Vielleicht fällt Euch was auf?

So werden die ungeordneten Zahlen in die 1. ListBox geschrieben ...

Delphi-Quellcode:
procedure TForm1.ZINListBox;
begin
  ListBox1.Items.Clear;
  For i := 10 DownTo 0 Do
  Begin
  ListBox1.Items.Add(IntToStr(i));
  End;

  ZINArray;

end;
So werden die ungeordneten Zahlen aus der 1. ListBox gelesen und in ein Array gesetzt ...

Delphi-Quellcode:
procedure TForm1.ZINArray;
begin
  For i := 0 To 10 Do
  Begin
  zahlen[i] := StrToInt(ListBox1.Items[i]);
  End;
end;
So sieht mein QuickSort aus ...

Delphi-Quellcode:
procedure TForm1.Quickie(VAR menge : array of integer; links, rechts, vert : integer);

begin

//Quicksort
i := links;
j := rechts;
mitte := zahlen[ (i+j) div 2];
tausch := vert;

  Repeat
    While zahlen[i] < mitte Do
    Begin
    i := i + 1;
    End;
    
      While zahlen[j] > mitte Do
      Begin
      j := j - 1;
      End;

        If i <= j Then
        Begin
          
          temp := zahlen[i];
          zahlen[i] := zahlen[j];
          zahlen[j] := temp;

          tausch := tausch + 1;

          i := i + 1;
          j := j - 1;
        End;

  Until i > j;

  If links < j Then
  Begin
  Quickie(zahlen, links, j, tausch);
  End;

  If rechts > i Then
  Begin
  Quickie(zahlen, i, rechts, tausch);
  End;

  Ergebnis;

end;
So werden die geordneten Zahlen in der 2. ListBox ausgegeben ...

Delphi-Quellcode:
procedure TForm1.Ergebnis;
begin

  For i := 0 To 10 Do
  Begin
  ListBox2.Items[i] := IntToStr(zahlen[i]);
  End;

  Edit1.Text := IntToStr(tausch);
  
End;
n0th!n
--------------------------------------------------
Ziele sind wichtiger als Erinnerungen
--------------------------------------------------
  Mit Zitat antworten Zitat