Ich habe eine kleine Frage bezüglich dem Thema Sortieralgorithmen. (Delphi)
Folgendes: Wir sollen für den Informatikunterricht vier verschiedene Arten von Sortieralgorithmen programmieren und testen. Drei davon habe ich schon fertig, aber einer macht mir Probleme. Hier mal die Erklärung, die auf dem Aufgabenzettel dazu stand:
Zitat von AUFGABE
SORTIEREN DURCH BINÄRES EINFÜGEN:
Beim binären Einfügen wird die vorhandene Ordnung der Ziel-Sequenz ausgenutzt. Dabei wird in der Mitte der vorhandenen Sequenz geprüft, ob das einzusortierende Element links oder rechts zu sein hat. Es wird um so weiter halbiert, bis die Einschubstelle gefunden wurde.
...
Es geht darum, eine zufällige Anzahl (<= 10000) zufälliger Werte in der richtigen Reihenfolge in ein Array (1 - 10000) einzuordnen. Mit den drei anderen Verfahren habe ich es wie gesagt geschafft, aber das "Sortieren durch binäres Einfügen" macht mir leider Schwierigkeiten.
Das Prinzip der Intervallhalbierung verstehe ich zwar, aber ich bekomme es nicht hin, den Algorithmus in Delphi umzusetzen. Kann mir vielleicht jemand helfen?
Klingt für mich nach Mergesort. Bei Mergesort geht es darum, daß du das Array solange rekursiv in Unterarrays teilst, bis du einzelne Elemente hast. Dann baust du das Ganze wieder zusammen. Wenn du zwei Unterarrays zusammenbaust, dann prüfst du, ob das letzte Element des einen Unterarrays kleiner ist als das erste Element des anderen und klebst sie entsprechend zusammen.
Wenn ich seit dem Sommersemester nichts veressen habe sollte das schon der ganze Algorithmus sein.
Der Algorithmus sieht in etwa so aus (Achtung, rekursiv):
Mit etwas Kenntnis deiner Sprache sollte es damit kein Problem sein, Mergesort zu implementieren.
Danke für die Hilfe.
Das ist zwar nicht das Verfahren, dass ich gesucht habe, aber sicher auch eine gute Möglichkeit. Ich wußte gar nicht, dass man die concat-Funktion auch auf Arrays anwenden kann.
Wie auch immer, ich habe es jetzt doch geschafft, das Sortierverfahren sozusagen auf Papier zu bringen. Getestet habe ich es zwar noch nicht, weil ich keinen Compiler habe, aber es sollte theoretisch funktionieren. Für diejenigen, die es interessiert, hier der Quellcode:
Danke für die Hilfe.
Das ist zwar nicht das Verfahren, dass ich gesucht habe, aber sicher auch eine gute Möglichkeit. Ich wußte gar nicht, dass man die concat-Funktion auch auf Arrays anwenden kann.
...
Ich wußte gar nicht, daß sie überhaupt existiert. Ich spreche kein Delphi und habe an der Stelle nur zeigen wollen, daß zwei Arrays konkateniert werden - wie genau das geht habe ich nicht gesagt. Der Metacode hat mit Pascal nichts zu tun.