Sortieralgorithmus Flussdiagramm?
Hallo,
ich habe versucht folgende Aufgabe mittels einem Flussdiagramm darzustellen und wollte mal nachfragen ob das so funktioniert:
"Nach Eingabe einer Liste[n], welche n Zahlen enthält, soll das Programm die Zahlen der Liste von Position 1 bis Position n aufsteigend sortieren und anschließend die sortierte Liste wieder ausgeben."
Ich habe den Bubble-Sort Algorithmus verwendet.
MMN kommt die Liste korrekt sortiert heraus. Liege ich da richtig oder ist mir bei zeichnen des Diagramms ein Fehler unterlaufen?
MFG
Habe einen Fehler entdeckt: Statt Liste[i] = Liste[j] hätte ich beim Dreieckstausch Liste[i] = Liste[i+1] schreiben müssen.
2 Antworten
Nein, da ist definitiv etwas durcheinander gekommen. j scheint der Iterator der inneren Schleife zu sein, fertig bist Du aber erst, wenn die äußere Schleife durch ist.
Nachtrag: *hust* vergiß was ich sagte, j ist der Iterator der äußeren Schleife. Allerdings müßtest Du dann i nach der Prüfung von j auf 0 initialisieren.
Stimmt fast, also, Du prüfst ob j=z-1 ist, das sollte aber j=n-1 sein, direkt nach der Prüfung (bei NEIN) sollte ein i:=0 rein. Die innere Schleife läuft immer bis zum vorletzten unsortierten Element (z-1), die äußere muß natürlich Gesamtzahl Elemente -1 mal ausgeführt werden.
Und den Vergleich i=z-1 könntest Du einfach über j ausdrücken, aber das ist nicht so wichtig.
Ah stimmt. Ich glaub ich habs gecheckt. Und dann kann ich das i := 0 ja auch oben löschen. Ich schreibe das Dokument mal um und poste hier dann einen Link mit meiner angepassten Lösung.
Japp, mache Dir einfach folgendes klar:
for (int i=0;i<n;++i)
ist äquivalent zu:
int i=0;
while (i<n){
Loop Body
++i;
}
Wenn also im Loop Body ein weitres for stünde, liegt der initialisierer eben im Körper der Schleife, nicht davor ;-).
Das 'äquivalent' ist ein wenig geflunkert, denn das Scoping ist etwas anders, aber wir wollen ja keine Korinthen k...en.
Hoffe ich habe dich so korrekt verstanden. Für mich gibt das jetzt einen Sinn.
Ich sehe da noch einen kleinen Fehler im Swap: x=Liste[i];Liste[i]=Liste[i+1];Liste[i+1]=x;
Ein j hat da nichts zu suchen :-). Du hattest zwar den Fehler gemerkt, aber unvollständig korrigiert.
Ah okay DANKE^^ hatte ich übersehen jap ^^
OKay danke für dein Feedback. Ich gehe es nochmal durch^^
Was meinst du mit Einlesen?
Achso stimmts dann doch?^^