AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

QuickSort

Ein Thema von nothin · begonnen am 6. Jan 2004 · letzter Beitrag vom 7. Jan 2004
Antwort Antwort
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
Benutzerbild von nothin
nothin

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

Re: QuickSort

  Alt 6. Jan 2004, 12:59
Wenigstens ein Corschlag wäre schon mal gut .
n0th!n
--------------------------------------------------
Ziele sind wichtiger als Erinnerungen
--------------------------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: QuickSort

  Alt 6. Jan 2004, 14:09
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
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: QuickSort

  Alt 6. Jan 2004, 14:10
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?
  Mit Zitat antworten Zitat
Michael Leyhe

Registriert seit: 1. Dez 2003
Ort: Sprockhövel
101 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: QuickSort

  Alt 6. Jan 2004, 15:11
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
Michael
  Mit Zitat antworten Zitat
Benutzerbild von nothin
nothin

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

Re: QuickSort

  Alt 6. Jan 2004, 16:04
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?
n0th!n
--------------------------------------------------
Ziele sind wichtiger als Erinnerungen
--------------------------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von Seniman
Seniman

Registriert seit: 15. Sep 2003
Ort: Münster
98 Beiträge
 
#7

Re: QuickSort

  Alt 6. Jan 2004, 16:14
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
  Mit Zitat antworten Zitat
Benutzerbild von nothin
nothin

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

Re: QuickSort

  Alt 7. Jan 2004, 09:55
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!
n0th!n
--------------------------------------------------
Ziele sind wichtiger als Erinnerungen
--------------------------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von nothin
nothin

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

Re: QuickSort

  Alt 7. Jan 2004, 18:08
... und es ist niemandem echt nichts aufgefallen? Etwas was an "meinem" Algorithmus falssh sein könnte?
n0th!n
--------------------------------------------------
Ziele sind wichtiger als Erinnerungen
--------------------------------------------------
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 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