Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Sortierverfahren für Liste (https://www.delphipraxis.net/159832-sortierverfahren-fuer-liste.html)

blauweiss 14. Apr 2011 17:41

AW: Sortierverfahren für Liste
 
Zitat:

Zitat von JasonDX (Beitrag 1095148)
Auch wenns eine verkettete Liste ist, macht das keinen Unterschied, auch nicht in der Laufzeitkomplexität - Die Algorithmen lassen sich daran anpassen.
Auf jeden Fall ist die Aussage des Lehrers, dass "einer der Algorithmen nicht funktioniert", falsch.

greetz
Mike

Richtig. Die Methoden/Eigenschaften von TList ebenso wie ein prozeduraler Ansatz auf Arrays lassen sich für eine einfach/doppelt verkettete Liste nachbilden und umgekehrt.
Entweder ist die Beschreibung von "funktioniert nicht" unvollständig (Wahrscheinlichkeit 1/3 geschätzt) und/oder (auch) dieser sog. "Lehrer" ist inkompetent (Wahrscheinlichkeit 4/5 geschätzt).

Gruß,
blauweiss

Deep-Sea 15. Apr 2011 08:46

AW: Sortierverfahren für Liste
 
Mh, schon lange nicht mehr mit gearbeitet ... aber auf dem von mir geposteten Screenshot sieht man ja in der ComboBox rechts, dass "MergeSort (VL)" markiert ist. VL steht dabei für verkettete Listen. Es ist eine spezielle MergeSort-Implementation, die dann - im Gegensatz zur normalen Version - sogar in-place arbeitet :-D In der normalen Version ist MergeSort für verkettete Listen ebenfalls suboptimal.

himitsu 15. Apr 2011 09:14

AW: Sortierverfahren für Liste
 
Zitat:

Zitat von DeddyH (Beitrag 1095136)
Dinge wie "in die Mitte pieksen und vergleichen" funktionieren nicht, da man nicht weiß, wo die Mitte ist.

Es sei denn man legt sich einen Index, z.B. in Form eines Array oder TList an, sortiert diese Liste und baut im Anschluß die verkettete Liste über das Array/TList neu auf.

DeddyH 15. Apr 2011 09:15

AW: Sortierverfahren für Liste
 
Dann kann ich aber gleich auf TList ausweichen.

Delphi-Laie 15. Apr 2011 09:38

AW: Sortierverfahren für Liste
 
Zitat:

Zitat von DeddyH (Beitrag 1095125)
TList oder verkettete Listen? Das ist ein riesiger Unterschied im Bezug auf Sortierung.

Richtig, da TList letztlich intern über ein dynamisches Array implementiert ist, ist auch dort völlige Zugriffsfreiheit bezüglich der Elemente vorhanden. Bei doppelt oder gar nur einfach verketteten Listen muß man sich hingegen recht umständlich von Element zu Element zum gesuchten/gewünschten „hangeln“ - eine ziemliche Sisyphusarbeit.

mleyen 15. Apr 2011 09:43

AW: Sortierverfahren für Liste
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1095333)
da TList letztlich intern über ein dynamisches Array implementiert ist

statisch* :duck:

Gausi 15. Apr 2011 09:45

AW: Sortierverfahren für Liste
 
Insertionsort und Bubblesort lassen sich sehr einfach auf Listen implementieren. Hier werden immer nur benachbarte Elemente verglichen und vertauscht - kein Problem bei Listen.

Bei Quicksort laufen zwei "Zeiger" von vorne und hinten durch die Datenstruktur und vertauschen ggf. die Werte an den beiden Positionen - kein Problem mit Listen. Auch der rekursive Schritt ist mit Listen kein Problem.

Mergesort ist das einzige, wo man etwas mehr nachdenken könnte - hier kommt es auch auf die Variante an, die verwendet werden soll. Generell sollte aber der natürliche Mergesort (das ist die Variante, die Vorsortierungen berücksichtigt) aber auch mit Listen gehen - und da geht auch das mischen ohne zusätzlichen Speicher. (Man kann auch Arrays in Linearzeit auf konstantem Platz mischen, aber das ist nicht ganz trivial)

Wenn in der Liste noch ein Heapsort aufgeführt wäre, dann würde ich sagen: Der geht nicht (ohne weiteres) mit Listen. Wenn dann würde sich da ein Binärbaum anbieten.

gucci 15. Apr 2011 13:06

AW: Sortierverfahren für Liste
 
Okay!

Danke für eure Hilfe!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr.
Seite 2 von 2     12   

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