Ich würde Bubblesort vorschlagen. Ist einfacher.
Nehmen wir wieder das Beispiel "caroline".
Bubblesort vergleicht jetzt die Buchstaben der Reihe nach. Also erst den ersten Buchstaben mit dem zweiten, den zweiten mit dem dritten usw. Ist die Reihenfolge falsch, werden die Buchstaben umsortiert. Das sieht bei caroline dann so aus:
c a r o l i n e
a c r o l i n e (a und c werden vertauscht, da a vor c kommt)
a
c r o l i n e (c und r bleiben stehen, da die Reihenfolge korrekt ist)
a c
o r l i n e (r und o werden vertauscht, da o vor r kommt)
a c o
l r i n e (l und r werden vertauscht, da l vor r kommt)
a c o l
i r n e (i und r werden vertauscht, da i vor r kommt)
a c o l i
n r e (n und r werden vertauscht, da n vor r kommt)
a c o l i n
e r (e und r werden vertauscht, da e vor r kommt)
An diesem Punkt hat der Sortieralgorithmus das Wort einmal durchgearbeitet. Jetzt greift eine Regel, die besagt: Wenn beim Durchlauf ein Buchstabe vertauscht wurde, muss das Programm noch einmal durchlaufen. Das Programm beginnt also erneut, diesmal mit dem Begriff "acoliner"
a c o l i n e r (a und c bleiben stehen, da die Reihenfolge stimmt)
a
c o l i n e r (c und o bleiben stehen, da die Reihenfolge stimmt)
a c
l o i n e r (l und o werden vertauscht, da l vor o kommt)
a c l
i o n e r (i und o werden vertauscht, da i vor o kommt)
a c l i
n o e r (n und o werden vertauscht, da n vor o kommt)
a c l i n
e o r (e und o werden vertauscht, da e vor o kommt)
a c l i n e
o r (o und r bleiben stehen, da die Reihenfolge stimmt)
Es wurden Buchstaben vertauscht, als startet der Algorithmus erneut:
a c l i n e o r (a und c bleiben stehen, da die Reihenfolge stimmt)
a
c l i n e o r (c und l bleiben stehen, da die Reihenfolge stimmt)
a c
i l n e o r (i und l werden vertauscht, da die vor l kommt)
a c i
l n e o r (l und n bleiben stehen, da die Reihenfolge stimmt)
a c i l
e n o r (e und n werden vertauscht, da e vor n kommt)
a c i l e
n o r (n, o und r stehen in der richtigen Reihenfolge)
Der Algorithmus startet erneut, da Buchstaben vertauscht wurden:
a c i l e n o r (a, c, i und l bleiben stehen, da die Reihenfolge stimmt)
a c i
e l n o r (e und l werden vertauscht, da e vor l kommt)
a c i e
l n o r (l, n, o und r bleiben stehen, da die Reihenfolge stimmt)
Der Algorithmus startet erneut, da Buchstaben vertauscht wurden:
a c i e l n o r (a, c und i bleiben stehen, da die Reihenfolge stimmt)
a c
e i l n o r (e und i werden vertauscht, da e vor i kommt)
Der Algorithmus startet erneut. Er findet nun keine Buchstaben mehr, deren Reihenfolge nicht passt. Das Ergebnis lautet also:
a c e i l n o r
Die Art und Weise, wie sortiert wurde, sollte jetzt klar sein. Bleibt nur noch die Frage, wie Du das ganze in Software realisierst.
Deine Programmiersprache steht mir natürlich nicht zur Verfügung. Falls nötig, kann ich mal schauen, ob ich dran komme. Bis dahin wirst Du mit C++ leben müssen, das aber offensichtlich Deiner Programmiersprache recht ähnlich ist.
Fangen wir an mit Variablen. Ich brauche irgendwas, um Kram abzuspeichern. Zum einen wäre da der Name, den ich sortieren will. Zum anderen brauche ich eine Variable, in die ich den Buchstaben zwischenspeichern kann, den ich austausche. Und ich muss mir merken, ob der Algorithmus sich Wiederholt. Ich schlage also mal vor
Name ----> Hierdrin speichern wir den zu sortierenden Namen
Buchstabe ----> Hierdrin speichern wir den Buchstaben
Wiederholung ----> Hierdrin speichern wir ab, ob sich der Vorgang wiederholt
Damit hätten wir schonmal etwas wichtiges. Wir wissen, was sich das Programm merken muss. Jetzt müssen wir uns nur noch überlegen, wie man das ganze programmiert. Mir steht hier nur C++ zur Verfügung. Die simpelste Methode, so ein Programm zu starten, dürfte wohl DevCPP sein. Ziemlich klein, lässt sich ruckzuck installieren. Solltest Du inzwischen tatsächlich das Microsoft Visual Studio heruntergeladen haben, kannst Du es auch damit realisieren (vorausgesetzt, Du kannst damit umgehen). Bei Problemen - frag!
Ich erkäre dir jetzt Stück für Stück, wie ich die Software realisieren. Als erstes würde ich vorschlagen, das wir eine sogenannte Schleife bauen. Eine Schleife wiederholt etwas so lange, bis irgend etwas passiert. Ich würde folgendes vorschlagen
Schleife: Wiederhole das folgende sieben mal.
Wenn der Name (Schleife) größer ist als der Name (Schleife+1), dann vertausche sie und rechne + 1 auf die Wiederholung.Das ist schon alles. Das (Schleife), das hinter Buchstabe steht, zählt lediglich mit, die wievielte Schleife gerade gedreht wird. Beim ersten Durchlauf wird jetzt überprüft, ob der erste Buchstabe des Namens größer ist als der zweite. Ist das der Fall, werden die beiden vertauscht. Außerdem wird auf "Wiederholung" eins drauf gerechnet. Du erinnerst Dich - wir müssen diese Schleife ja so oft wiederholen, bis ALLE Buchstaben sortiert sind. Das erreiche ich so
Mache das nun folgende so lange, bis...
........
........ Setze Wiederholung auf Null........
........
Schleife: Wiederhole das folgende sieben mal.
........
........ Wenn der Name (Schleife) größer ist als der Name (Schleife+1), dann vertausche
........ sie und rechne + 1 auf die Wiederholung.........
... der Wert "Wiederholung" auf Null steht.Und das ist der ganze Programmcode, mehr braucht es nicht. Wie ich sagte - er muss so lange eine Schleife machen, bis keine Wiederholung mehr nötig war. Als C++ Programmcode sieht das ganze dann so aus:
Original anzeigen (0,2 MB)