Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
Delphi 8 Architect
|
Re: BubbleSort graphisch darstellen
17. Jan 2004, 15:48
so z.B.:
Delphi-Quellcode:
procedure TForm1.Bubblesort1Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure Timer1Timer(Sender:TObject);
begin
var i,j,Platz:integer;
speicherf:array[0..1] of tedit;
begin
for i:=19 downto 1 do
for j:=1 to i do
if strtoint(Feld[j].Text) > strtoint(Feld[j+1].text) // wenn die Zahl in Feld j größer
// ist als in deren Nachfolgerfeld
then begin
Feld[j].Top:=30; //Feld j wird graphisch heraufgesetzt (normal:200)
platz:=Feld[j+1].Left; //Left-Wert des Nachfolgerfeldes wird gespeichert
Feld[j+1].Left:=Feld[j].left; //Rechtes Feld wird nach links verschoben
Feld[j].Left:=platz; //Linkes Feld (weiter oben) wird nach rechts verschoben
Feld[j].top:=200; //Feld wird wieder in die Edit-Felder-Reihe reingesetzt
Speicherf[0]:=Feld[j];
Feld[j]:=Feld[j+1];
Feld[j+1]:=Speicherf[0]; //Die Felder bekommen ihre Definition erneuert,
//so dass es nachher nicht zu Verwechslungen kommt
//(Feld an Position 1 ist dann edit1 etc.)
Application.ProcessMessages; // gibt Application chance, die Veränderungen auf den
// Bildschirm zu bringen
Break; // bricht die Schleife ab
end;
end;
Wenn Du nun den Timer auf Intervall = 1000 setzt, so macht er alle 1000 Millisekunden einen Sortierschritt.
Gruß
Tim Leuschner Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
|