nabend,
ich soll buchstaben sortieren und dazu verschiedene sortierverfahren benutzen.
bubblesort ist fertig, als nächstes ist minimumsort bzw. selectionsort an der reihe.
jedoch bin ich gerade dabei an meinem algorithmus für selectionsort zu verzweifeln...
es funktioniert teilweise schon ganz gut, allerdings werden genauso gerne auch mal buchstaben verschluckt/verändert.
das programm funktioniert so: es werden eine bestimmte anzahl von panels (zwischen 2-15, array namens Buchstaben) erstellt und mit einem zufälligen buchstaben als caption ausgestattet.
diese sollen jetzt sortiert werden.
problem: ist die buchstabenfolge schon sortiert, macht er totalen mist :S ebenso weist er einem panel gerne mal einen anderen buchstaben zu...
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: 25: 26: 27: 28: 29:
| procedure TForm1.MiniSort; var n,position, untergrenze:integer; minBuchstabe, zwischen1:char; zwischenfarbe:tcolor; begin
untergrenze := 1; position := 1;
REPEAT minBuchstabe := Buchstaben[untergrenze].Caption[1]; FOR n:=untergrenze TO buchstabenanzahl DO begin IF Buchstaben[n].Caption[1] < minBuchstabe THEN begin minBuchstabe := Buchstaben[n].Caption[1]; position := n; end; end;
zwischen1 := Buchstaben[untergrenze].Caption[1]; Buchstaben[untergrenze].Caption := minBuchstabe; Buchstaben[position].Caption := zwischen1; inc(untergrenze);
UNTIL untergrenze > buchstabenanzahl-1;
end; |
ich war eigentlich der meinung, dass dieser weg den algorithmus zu realisieren recht gut klappen wird, nur kann ich meinen denkfehler einfach nicht finden.
ich denke dass mir einfach eine bessere abbruchbedingung fehlt und da fällt mir keine ein.
ich bin dankbar für jede hilfe.