Sortieralgorithmus brauche Hilfe

Hallo, ich hoffe mir kann jemand helfen. Ich verstehe die Sortieralgorithmen überhaupt nicht. Kann mir jemand erklären wie der Algorithmus im Bild funktioniert?
Vielen Dank

Hallo!

Naja, das ist eine Hausaufgabe, daher solltest du da selber drauf kommen. Daher werden wir das nicht erklären, aber dir Hilfestellungen geben.

Hast du den Code mal per Hand ausprobiert? Also, wenn in dem Stapel die Zahlen 1;2;4;3;6;5; drin währen, was würde da Schritt für Schritt passieren?

3 Like

Nein aber ich kann dir zeigen, wie man ein Bild um -90° dreht. :slight_smile:
Du machst dir echt keine Mühe mit den HA…

1 Like

Ich soll dazu auch noch Aufgaben machen, die hätte ich hier auch hochladen können und fragen können ob mir die jemand machen kann. Ich versuche aber das selber zu machen, nur wie soll ich die Aufgaben machen, wenn ich den Quellcode nicht verstehe. Ich habe lediglich um Hilfe gebeten und wollte nicht, dass jemand anderes meine Hausaufgaben macht.

Moin,

anhand der Syntaxbeschreibung für diese Sprache (C?) sollte es durchaus möglich sein, den Ablauf zu begreifen. Sortieren heißt, die Werte in eine nach Größe geordnete Reihenfolge zu bringen.

Gruß
Ralf

1 Like

Das IST eine Aufgabe, steht sogar darüber. Du hast den Rest zwar nicht abfotografiert, aber wenn die Funktion/Methode schon „WasnDasFuernSort“ heißt, braucht man dazu gar keine richtige Aufgabenstellung, weil das zumindest Teil der Aufgabe ist.

Was genau davon verstehst du nicht?

Um mir den Hals nicht mehr verrenken zu müssen, hier das gedrehte Bild:

Die Frage wurde schon mal bestellt, aber aus meiner Sicht noch nicht beantwortet: was genau verstehst Du nicht? Wie gut ist Dein Grundwissen in dieser Programmiersprache?

Und aus persönlicher Neugier: zu welchem Schulfach gehört es?

Grüße
Pierre

1 Like

Ja da sehe ich förmlich die Karten hin & her wandern…
:slight_smile:

Die Hilfekarte wurde zu unserer Zeit gern Puffer genannt…
Stelle es dir bildlich vor!

w-w-w

Die Frage ist schon was älter, aber nicht beantwortet. Da ich Zeit habe und die Sortierung anders läuft, als ich es machen würde, versuche ich mal eine Erklärung am Beispiel von zehn Zahlen.

Position im stapel: 0  1  2  3  4  5  6  7  8  9
Zahlen:            25 33  1  7 45  3 25 10  7  0
for(int i=1; i<stapel.length; i++)

Definiere den Zeiger „i“, setze ihn auf den Wert „1“, durchlaufe die Schleife so lange i kleiner ist als die Anzahl der Zahlen. i bekommt also der Reihe nach die Werte 1 … 9 und zeigt zuerst auf die Zahl 33, zuletzt auf die Zahl 0.

Für jedes i gibt es die innere Schleife mit dem Zeiger j

for(int j=i; j>0; j--)

j zeigt zuerst auf dieselbe Zahl wie der laufende Zeiger i, beim allerersten Mal also auf 33. Durchlaufe die innere Schleife solange j größer als 0 und reduziere j bei jedem Durchlauf um 1 (j–).

Nun vergleiche die Zahl, auf die j zeigt mit der Zahl davor (j-1). Wenn sie kleiner ist, tausche die beiden Zahlen.

if(stapel[j] < stapel[j-1])

Beim ersten Mal wird nichts getauscht, 33 ist nicht kleiner als 25.

Wenn i auf Position 2 zeigt, wird getauscht. Zuerst die 1 mit 33, dann die 1 mit 25. Zwischenstand:

Position im stapel: 0  1  2  3  4  5  6  7  8  9
Zahlen:             1 25 33  7 45  3 25 10  7  0

Wenn die Zahl stapel[j] gleich oder größer ist als stapel[j-1] wird die innere for-Schleife abgebrochen, es geht weiter mit dem nächsten i.

Das Endergebnis ist

Position im stapel: 0  1  2  3  4  5  6  7  8  9
Zahlen:             0  1  3  7  7 10 25 25 33 45