Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sortieren einer Liste? (https://www.delphipraxis.net/20111-sortieren-einer-liste.html)

Chris P 13. Apr 2004 20:37


Sortieren einer Liste?
 
Hi Leute, ich will eine einfach verkettete Liste nach Namen sortieren.
Aber wo liegt der Fehler???

Delphi-Quellcode:
procedure TForm1.SortList();
var
   Nav, Help: PZeiger;
begin
   Nav := Root;

   while Nav^.Next <> nil do
   begin
      if Nav^.Name > Nav^.Next^.Name then
      begin
         Help := Nav;
         Nav := Nav^.Next;
         Nav^.Next := Help;
      end;
   Nav := Nav^.Next;
   end;
end;
Die Liste ist später durcheinander.

Kann mir jemand helfen?

Danke...

xineohp 13. Apr 2004 20:44

Re: Sortieren einer Liste?
 
der Sortieralgorithmus ist unvollständig. Wenn mich nicht alles täuscht fehlt die zweite Schleife.

phoenix

Chris P 13. Apr 2004 20:46

Re: Sortieren einer Liste?
 
Zweite Schleife??? Soweit ich mich erinnere geht es auch mit einer.

Könntest du mir helfen?

xineohp 13. Apr 2004 20:53

Re: Sortieren einer Liste?
 
Delphi-Quellcode:
procedure TForm1.SortList();
var
   Nav, Help: PZeiger;
   veraendert: boolean;
begin

   repeat
   veraendert := false;

   Nav := Root;
   while Nav^.Next <> nil do
   begin
      if Nav^.Name > Nav^.Next^.Name then
      begin
         Help := Nav;
         Nav := Nav^.Next;
         Nav^.Next := Help;
         veraendert := true;
      end;
   Nav := Nav^.Next;
   end;
   
   until not veraendert;

end;
so müsste es funktionieren. Nennt sich Bubblesort.
siehe auch: delphi-source

phoenix

Chris P 13. Apr 2004 20:56

Re: Sortieren einer Liste?
 
Das sieht schon ma gut aus!

Werds ma probieren, ich danke dir! :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 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