-delphin- - Mi 21.09.05 15:00
Titel: Verzögerung bei BubbleSort
Also ich hab bei meinem BubbleSort-Algo eine Verzögerungsprozedur eingebaut, damit man sieht, wie er sortiert.
Das ist die BubbleSort-Prozedur:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| repeat nichtvertauscht:=true; for i:=0 to Length(Folge)-2 do if Folge[i] > Folge[i+1] then begin Tausche(Folge[i], Folge[i+1]); nichtvertauscht:=false; Delay(SEDelay.Value); <-- Aufruf der Delay-Prozedur end; until nichtvertauscht; |
und das die Delay-Prozedur:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure Delay(MSeconds : Longint); var FTickCount : Longint; Begin FTickCount := GetTickCount; Repeat Application.ProcessMessages; Until ((GetTickCount-FTickCount) >= MSeconds); end; |
Leider funktioniert es nur insofern, als dass er immer nur die vollständige Sortierung verzögert, das heißt er sortiert und gibt es verzögert aus, er soll aber verzögert sortieren, und währenddessen ausgeben..
Woran liegt das?
Thx 4 help :D
Grishnak - Mi 21.09.05 15:21
Wenn du willst, dass während des Sortierens eine Ausgabe erfolgt, dann musst du auch während des Sortierens eine Ausgabe vornehmen!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure FolgeAnzeigen; begin [...] end;
[...]
repeat nichtvertauscht:=true; for i:=0 to Length(Folge)-2 do if Folge[i] > Folge[i+1] then begin Tausche(Folge[i], Folge[i+1]); nichtvertauscht:=false; FolgeAnzeigen; Delay(SEDelay.Value); <-- Aufruf der Delay-Prozedur end; until nichtvertauscht; |