Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Zahlen sortieren WIE???


EvA - Di 01.02.05 12:06
Titel: Zahlen sortieren WIE???
Moin,

ich habe in meinem Delphiprogramm sechs Edits und einen Button. Der Benutzer soll in jedes Edit eine Zahl eingeben und danach auf den Button klicken. Das Programm soll dann die Zahlen der Größe nach sortieren und sie dann in den Edits erscheinen lassen. Ich habe sechs Variablen angelegt, doch wie komme ich weiter. Ich habe es schon mit IF THEN ELSE versucht, was mir aber zu kompliziert/sinnlos erschien, da es ewig gedauert hätte bis ich alle Bedingungen eingegeben hätte. Leider bin ich noch ein Anfänger!!! Wäre nett, wenn mir da jemand einen Tipp geben könnte. Danke.

EvA


Moderiert von user profile iconGausi: Topic aus VCL (Visual Component Library) verschoben am Di 01.02.2005 um 11:12


st-matze - Di 01.02.05 12:13

Anstatt die Zahlen in extra Variablen zu speichern, speichere Sie in einem array ab. Dann sortierst du sie in diesem array mittels eines Sortieralgorithmus. Such hier im forum mal nach QuickSort(effektifstes sortierverfahren oder nach bubblesort (das ist das am einfachsten verständliche)


Gausi - Di 01.02.05 12:15

Hallo und :welcome:

Fürs sortieren von Zahlen gibts ne Reihe Möglichkeiten. Da wären z.B. Bubblesort (einfach zu programmieren, aber langsam), und dann kompliziertere Sachen wie Quicksort, Mergesort und Heapsort. Ich glaube, dass Sveno in diesem Unterforen zu den letzten dreien ein paar Fragen hatte, die auch schon gelöst wurden. Und in einem hat er glaube ich auch den Quellcode von seinem Programm verlinkt, in dem so ziemlich alle Sortierverfahren implementiert sind.


Heiko - Di 01.02.05 12:16

noch einfacher zu verstehen ist das Austauschverfahren (ist das langsamste).


uall@ogc - Di 01.02.05 12:37

wenn ich mich nicht irre ist bubblesort langsamer als selection- oder insertionsort


sveno - Di 01.02.05 12:45

http://www.beepworld.de/memberdateien/members19/sveno2/bubble.rar

Da findet6s du nochmal mein Programm. Dort fu7nktionieren alle sortierverfahren ausser mergesort. Du must aber nur das lokal deklarierte hilfsfeld global deklarieren und der mergesort funktioniert auch.

Hoffe es hilft dir weiter.

Gruss Sven


Gausi - Di 01.02.05 12:49

Laufzeiten:
N: Anzahl der Zahlen,
M: Anzahl der Ziffern der Zahlen
Angaben im O-Kalkül, d.h. konstante Faktoren spielen keine Rolle

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Sortierverfahren | Best-Case | Med-Case | Worst-Case
----------------------------------------------------
Bubblesort            N           N^2       N^2
InsertSort            N           N^2       N^2
Selectionsort        N^2          N^2       N^2
Quicksort          N*log(N)    N*log(N)     N^2
Heapsort           N*log(N)    N*log(N)   N*log(N)
MergeSort      N bzw N*log(N)  N*log(N)   N*log(N)
Fachverteilung       N*M         N*M        N*M


Bei 6 Zahlen ist das aber sowieso alles ganz egal. :lol:


EvA - Mi 02.02.05 19:51

Dankeschön für die schnellen und auch hilfreichen Antworten :)

EvA