Entwickler-Ecke

Sonstiges (Delphi) - Sortieren von Zahlenwerten bei arrays


delphianer5 - Mi 29.09.10 21:28
Titel: Sortieren von Zahlenwerten bei arrays
Hi,
ich schreibe morgen eine Kursarbeit über Informatik. Hab mir Übungsaufgaben besorgt. Bin mir aber nicht völlig sicher ob ich sie korrekt gelöst habe und wäre sehr dankbar wenn ihr mir helfen könntet. Ihr sollt hier nicht meine Hausaufgaben machen, ich will nur wissen ob das stimmt was ich sage und ob ich etwas verbessern kann oder etwas vergessen habe.
Danke!

Aufgabenstellung:
a) Sei "SortZahlen" ein array mit 50 Elementen vom Typ real. Gib die notwendigen Delphi-Anweisungen an, um "SortZahlen" so zu sortieren, dass im ersten Feldelement die kleinste Zahl steht, im zweiten die zweit kleinste usw.
b)Schätze ab, wie viele Schritte dein Algorithmus benötigt, bis alle Zahlen sortiert sind?
Meine Lösung:
a)

Delphi-Quelltext
1:
2:
3:
4:
5:
repeat
   for i:= 1 to 50 do
      x[i]:=High(SortZahlen);
until
x[i]<x[i-1]
[/quote]
B) 50 Schritte?

Wäre nett wenn da einer drüber schauen könnte. Danke!

mfg


Tranx - Mi 29.09.10 21:32

Es gibt eine Reihe von Sortierungsalgorithmen. Schau doch mal nach unter

http://www.sortieralgorithmen.de/

Dort findest Du alles dazu. Es sind leider nur Beispiele in C, aber das Übertragen sollte nicht ganz so kompliziert sein.


Gausi - Mi 29.09.10 21:41

Die einfachsten Varianten zum Sortieren sind imho Sortieren durch Auswahl und der allseits beliebte Bubblesort. Zumindest zu letzterem sollte sich haufenweise was hier im Forum finden. Grobe Laufzeitabschätzung für die Anzahl der Vergleiche bei 50 Zahlen: 2500. Je nach Implementierung reichen auch 1250, aber so in der Größenordnung bewegt sich das. ;-)


Tankard - Mi 29.09.10 21:52

auf wiki gibt es ne artikel dazu mit pseudocode, der pascal ziemlich aehnlich ist

http://de.wikipedia.org/wiki/Bubblesort#Formaler_Algorithmus

laufzeit ist n^2


Delphi-Laie - Di 05.10.10 23:44

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Aufgabenstellung:
a) Sei "SortZahlen" ein array mit 50 Elementen vom Typ real. Gib die notwendigen Delphi-Anweisungen an, um "SortZahlen" so zu sortieren, dass im ersten Feldelement die kleinste Zahl steht, im zweiten die zweit kleinste usw.
b)Schätze ab, wie viele Schritte dein Algorithmus benötigt, bis alle Zahlen sortiert sind?


Ist zwar schon über den Termin, aber dennoch hier mein Senf dazu:

Da keinerlei Anforderungen an die Effizienz bzw. das Laufzeitverhalten des Sortieralgorithmus' gestellt worden zu sein scheinen, geht es auch ziemlich einfach (skizzenhaft):

überprüfe, ob die Datenmenge sortiert* ist.
Falls nein, vertausche zwei beliebige (am besten per Zufallsgenerator oder Permutation ausgewählte) Elemente
wiederhole solange, bis die Überprüfung positiv ausfällt.

*Was unter "sortiert" zu verstehen ist, muß natürlich vorher festgelegt werden, gewöhnlicherweise erfüllen "aufsteigend" oder "absteigend" dieses Kriterium.

Die Abschätzung der mittleren Laufzeit ist m.E. von der Größenordnung her recht simpel: n!/2. Das dauert länger als alle Ewigkeiten. Und das schöne ist: Die Aufgabenstellung wurde erfüllt, und man hat - im Gegensatz zu anderen Zöglingen - eine Lösung der "ganz besonderen Art", der man zudem die Systematik bei der Problemlösung bzw. dem Erfüllen der Aufgabenstellung auch nicht absprechen kann.