AGB  ·  Datenschutz  ·  Impressum  







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

problem mit quicksort

Ein Thema von ch4mp1on · begonnen am 20. Feb 2006 · letzter Beitrag vom 22. Feb 2006
Antwort Antwort
ch4mp1on

Registriert seit: 20. Feb 2006
3 Beiträge
 
#1

problem mit quicksort

  Alt 20. Feb 2006, 20:59
Hallo,

also ich bin grad dabei den quicksort zu programmieren. Hab schon einige Beispiele im i-net zu hilfe genommen und allerhand ausprobiert, aber irgendwie krieg ich den nicht ans laufen.
Ich hab immer einen stack overflow, aber die Abbruchbedingung müßte eigentlich stimmen.


Delphi-Quellcode:
procedure TfrmRahmen.quicksort(var Zahlenliste:TZahlenliste; var unterePos:integer; var oberePos:integer);
var
  Pivot, links, rechts, temp:integer;
begin
  Pivot:=Zahlenliste[anzahl div 2];
  links:=unterePos;
  rechts:=oberePos;

  While (links < rechts) do
    begin
      While (Zahlenliste[links]<Pivot) do links:=links+1;
      While (Zahlenliste[rechts]>Pivot) do rechts:=rechts-1; // wandern
      If (links < rechts-1) then
        begin
          temp:=Zahlenliste[links];
          Zahlenliste[links]:=Zahlenliste[rechts]; // tauschen
          Zahlenliste[rechts]:=temp;
          links:=links+1;
          rechts:=rechts-1;
        end;
    end; // while

    If unterePos<rechts then quicksort(Zahlenliste,unterePos,rechts);
    If links<oberePos then quicksort(Zahlenliste,links,oberePos);

end; { Quicksort }
  Mit Zitat antworten Zitat
marabu

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

Re: problem mit quicksort

  Alt 20. Feb 2006, 21:54
Herzlich willkommen in der Delphi-PRAXiS, champion.

Bei deiner Implementierung scheinen dir zwei Flüchtigkeitsfehler unterlaufen zu sein, wenn ich nicht irre:

Delphi-Quellcode:
// ...
  While (links <= rechts) do
// ...
      If (links < rechts + 1) then
// ...
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
ch4mp1on

Registriert seit: 20. Feb 2006
3 Beiträge
 
#3

Re: problem mit quicksort

  Alt 21. Feb 2006, 15:40
Hmm, die Änderungen machen nicht wirklich Sinn.
Der Fehler bleibt hartnäckig der gleiche.
  Mit Zitat antworten Zitat
marabu

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

Re: problem mit quicksort

  Alt 21. Feb 2006, 17:48
Die Änderungen machen schon Sinn. Zusätzlich ändere deine Berechnung des Pivot-Elementes noch ab:

Pivot := Zahlenliste[(unterePos + oberePos) div 2]; marabu
  Mit Zitat antworten Zitat
wursthunter

Registriert seit: 5. Feb 2006
Ort: Callenberg
57 Beiträge
 
Delphi 7 Professional
 
#5

Re: problem mit quicksort

  Alt 21. Feb 2006, 18:38
Ich bevorzuge BubbleSort! *g*
...
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#6

Re: problem mit quicksort

  Alt 21. Feb 2006, 18:45
schau mal hier : http://www.thedelphimagazine.com/disks.php

Issue 37, Sep (223Kb) von 1998 runterladen, da ist Quellcode zu Quicksort in reinstform mit drin.
Wunderschön und funktioniert
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: problem mit quicksort

  Alt 21. Feb 2006, 19:25
Ich empfehle auch immer wieder diese nette Seite über Sortieralgorithmen
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
ch4mp1on

Registriert seit: 20. Feb 2006
3 Beiträge
 
#8

Re: problem mit quicksort

  Alt 22. Feb 2006, 13:08
Ok Danke Leute! Es funzt!

Jetzt werd ich mich mal am Heap und MergeSort versuchen.
  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 13:14 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