Tach!
Ich habe einen Algorithmus zum Sortieren eines Arrays. Dieses Array (of integer) ist gefüllt mit Zahlen welche nach Durchführung des Algorithmus der Größe nach sortiert sein sollten.
Der Algorithmus sollte eigendlich funktionieren, da ich die Vorlage dazu aus einem alten Prog. geklaut habe. Aber irgendwo scheint ein Fehler zu sein da sich die Reihenfolge der Elemente des Arrays zwar verändern, aber nicht nach Größe sortiert werden...
Ich bin schon seit einer halben Ewigkeit auf der Suche nach dem Fehler aber kann ihn einfach nicht finden. Vielleicht sieht ja eine/r von euch mehr als ich?
Hier der Algorithmus (n = Anzahl der Elemente im Array, liste = array of integer, Ausgabe erfolgt im HP):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure Sortieren(n: integer; var feld:liste); var l, r : word; X1, help : integer; begin if n<2 then writeln ('Eine Umsortierung fuer n<2 ist nicht moeglich !'); readln; X1 := feld[1]; l := 2; r := n; while l < r do begin while (feld[l] < X1) and (l < r) do inc(l); while (feld[r] >= X1) and (l < r) do dec(r); if l < r then begin help := feld[l]; feld[l] := feld[r]; feld[r] := help; inc(l); dec(r); end; end; if feld[r] >= X1 then dec(r); feld[1] := feld[r]; feld[r] := X1; end; |
Schonmal THX für die Mühe!
Moderiert von
raziel: Topic aus Sonstiges (Delphi) verschoben am Fr 03.03.2006 um 19:02