Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   QuickSort (https://www.delphipraxis.net/14275-quicksort.html)

nothin 6. Jan 2004 00:35


QuickSort
 
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;

nothin 6. Jan 2004 12:59

Re: QuickSort
 
Wenigstens ein Corschlag wäre schon mal gut :cry:.

Matze 6. Jan 2004 14:09

Re: QuickSort
 
Hi!

Ich verstehe den Anfang schon nicht.

Delphi-Quellcode:
For i := 10 DownTo 0 Do
  Begin
    ListBox1.Items.Add(IntToStr(i));
  End;
Dann steht in der ListBox ja nur:
  • 10
    9
    8
    7
    6

    ...

    0

Matze 6. Jan 2004 14:10

Re: QuickSort
 
So verstehe ich's ja:

Delphi-Quellcode:
For i := 10 DownTo 0 Do
  Begin
    ListBox1.Items.Add(IntToStr(Zahlen[i]));
  End;
Liegt's vielleicht daran?

Michael Leyhe 6. Jan 2004 15:11

Re: QuickSort
 
Ich habe mir deine Quicksort Prozedur mal angeschaut, konnte aber auf dem ersten Blick keinen Fehler sehen.
Probier es doch mal mit diesem Sortieralgorithmus von DP.Sortieralgorithmen

nothin 6. Jan 2004 16:04

Re: QuickSort
 
Zitat:

Zitat von Matze
Hi!

Ich verstehe den Anfang schon nicht.

Delphi-Quellcode:
For i := 10 DownTo 0 Do
  Begin
    ListBox1.Items.Add(IntToStr(i));
  End;
Dann steht in der ListBox ja nur:
  • 10
    9
    8
    7
    6

    ...

    0

Die Zahlen werden von 10 bis 0 reingelegt und dann sollen sie von 0 bis 10 geordnet werden. Was ist denn da zu verstehen?

Seniman 6. Jan 2004 16:14

Re: QuickSort
 
Hallo nothin,

es wäre ganz hilfreich, wenn du schreiben würdest, was dein Programm, so wie du es oben angegeben hast, überhaupt macht. Stürzt es ab? Schreibt es die Zahlen unsortiert in die zweite Liste? Was genau an dem Programm funktioniert nicht?
In dem Code den du angegeben hast fehlen beispielsweise alle lokalen Variablendeklarationen. Ist das Absicht?

Grüße
Seniman

nothin 7. Jan 2004 09:55

Re: QuickSort
 
Die Variablen wurden global definiert. Das Programm ordnet nicht alle Zahlen so wie es sollte. Manchmal zum Besipiel so ... 002223498345 ... wenn es sich um ein paar zufällige Zahlen gehandelt hat (wobei es mehrere gleiche Zahlen geben kann).
Also QuickSort erfült seine Aufgabe nicht!

nothin 7. Jan 2004 18:08

Re: QuickSort
 
... und es ist niemandem echt nichts aufgefallen? Etwas was an "meinem" Algorithmus falssh sein könnte?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz