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;