delphianer5 hat folgendes geschrieben : |
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.