Delphi-PRAXiS

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)

gucci 14. Apr 2011 15:37

Delphi-Version: 5

Sortierverfahren für Liste
 
Hallo Leute,

Ich soll im Informatikunterricht eine Präsentation über "Sortierverfahren" erstellen. Unter anderem gibt es da das Thema "Sortierverfahren mit Listen". Ich bin mir nicht sicher, welcher von den vieren funktioniert:

1. Merge Sort
2. Quick Sort
3. Insertion Sort
4. Bubble Sort

Allerdings bin ich mir ziemlich sicher, dass der Bubble Sort nicht klappt.

Ich soll auch selber einen Sortieralghorithmus schreiben. Könnt ihr mir einen Tipp geben, welcher der einfachste und sinnvollsten ist?

LG, Gucci

aurikel_Max 14. Apr 2011 15:38

AW: Sortierverfahren für Liste
 
Zitat:

Zitat von gucci (Beitrag 1095119)
Hallo Leute,

Ich soll im Informatikunterricht eine Präsentation über "Sortierverfahren" erstellen. Unter anderem gibt es da das Thema "Sortierverfahren mit Listen". Ich bin mir nicht sicher, welcher von den vieren funktioniert:

1. Merge Sort
2. Quick Sort
3. Insertion Sort
4. Bubble Sort

Allerdings bin ich mir ziemlich sicher, dass der Bubble Sort nicht klappt.

Ich soll auch selber einen Sortieralghorithmus schreiben. Könnt ihr mir einen Tipp geben, welcher der einfachste und sinnvollsten ist?

LG, Gucci

Der Bubblesort ist ziemlich einfach - grundsätzlich funktionieren alle der oben aufgeführten Sortieralgorithmen (wir haben damals Arrays und keine Listen verwendet).

gucci 14. Apr 2011 15:42

AW: Sortierverfahren für Liste
 
"Der Bubblesort ist ziemlich einfach - grundsätzlich funktionieren alle der oben aufgeführten Sortieralgorithmen (wir haben damals Arrays und keine Listen verwendet). "

Wir nehmen jetzt Listen durch und sollen diese sortieren. Unser Lehrer hat gesagt, dass nicht alle von den vieren funktionieren.

DeddyH 14. Apr 2011 15:53

AW: Sortierverfahren für Liste
 
TList oder verkettete Listen? Das ist ein riesiger Unterschied im Bezug auf Sortierung.

Deep-Sea 14. Apr 2011 15:54

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! Funktionieren tun aber trotzdem alle - nur eben manche besser als andere :-D

Deep-Sea 14. Apr 2011 15:59

AW: Sortierverfahren für Liste
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe immer noch ein Programm rumliegen, wo ich mit Sortieralgos gespielt habe *in erinnerungen schwelg* :stupid:
Anhang 33901

(PS: Rechts sind gerade die Daten von BubbleSort dargestellt, nicht das noch einer meckert, dass es nicht zum MergeSort passt ;))

gucci 14. Apr 2011 16:22

AW: Sortierverfahren für Liste
 
Zitat:

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

es handelt sich um verkette Listen!

BUG 14. Apr 2011 16:28

AW: Sortierverfahren für Liste
 
Weil es gerade so durch die Blogs geht::)

DeddyH 14. Apr 2011 16:35

AW: Sortierverfahren für Liste
 
OK, bei verketteten Listen machen nur die Sortieralgorithmen Sinn, die die Liste von vorn nach hinten (oder andersherum) abarbeiten. Dinge wie "in die Mitte pieksen und vergleichen" funktionieren nicht, da man nicht weiß, wo die Mitte ist.

JasonDX 14. Apr 2011 17:12

AW: Sortierverfahren für Liste
 
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

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 07:53 Uhr.

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