Autor Beitrag
delphianer5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 29.09.10 21:28 
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)
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Mi 29.09.10 21:32 
Es gibt eine Reihe von Sortierungsalgorithmen. Schau doch mal nach unter

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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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. ;-)

_________________
We are, we were and will not be.
Tankard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: Mi 29.09.10 21:52 
auf wiki gibt es ne artikel dazu mit pseudocode, der pascal ziemlich aehnlich ist

de.wikipedia.org/wik...Formaler_Algorithmus

laufzeit ist n^2
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: 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.