Thema: Auswahlsort

Einzelnen Beitrag anzeigen

Benutzerbild von nothin
nothin

Registriert seit: 18. Okt 2003
21 Beiträge
 
#1

Auswahlsort

  Alt 5. Jan 2004, 12:38
Sers Leute,

bin gerade dabei Auswahlsort zu "programmieren". Es sollen Balken angeordnet werden unzwar vom kleinsten oben bis zum größten unten. Nur klappt es überhaupt nicht obwohl ich die ganze Zeit denke, dass der Code richtig ist. Vielleicht könnt Ihr mir sagen was an dem Code nicht stimmt?

So werden die Balken gezeichnet, die dann zu sortieren sind ...

Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
begin
PaintBox3.Repaint;

index := BalkenZahl;
yps := 1;

For i := 1 To BalkenZahl Do
Begin

Application.Processmessages;

PaintBox3.Canvas.Pen.Color := CLBlue;
PaintBox3.Canvas.Rectangle(1, yps, index, yps+1);

sleep(TrackBar1.Position);

recsize2[index] := index;
x2[index] := 1;
y2[index] := yps;

index := index-1;
yps := yps+2;

End;
end;
So werden die Balken sortiert ...

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
Var
min : integer;
begin
Start := GetTickCount;

tausch2 := 0;

For i := 1 To BalkenZahl - 1 Do
Begin

min := recsize2[i];

Application.Processmessages;

For j := i + 1 To BalkenZahl Do
Begin

Application.Processmessages;

If recsize2[min] < recsize2[j] Then
Begin
min := j;
End;

End;


If recsize2[min] <> recsize2[i] Then
Begin

PaintBox3.Canvas.Pen.Color := CLRed;
PaintBox3.Canvas.Rectangle(1, y2[i], recsize2[i], y2[i]+1);

PaintBox3.Canvas.Pen.Color := CLRed;
PaintBox3.Canvas.Rectangle(1, y2[min], recsize2[min], y2[min]+1);

sleep(TrackBar1.Position);

PaintBox3.Canvas.Pen.Color := ClBtnFace;
PaintBox3.Canvas.Rectangle(1, y2[i], recsize2[i], y2[i]+1);

PaintBox3.Canvas.Pen.Color := ClBtnFace;
PaintBox3.Canvas.Rectangle(1, y2[min], recsize2[min], y2[min]+1);

temp2 := recsize2[i];
recsize2[i] := recsize2[min];
recsize2[min] := temp2;

tausch2 := tausch2 + 1;

PaintBox3.Canvas.Pen.Color := CLBlue;
PaintBox3.Canvas.Rectangle(1, y2[i], recsize2[i], y2[i]+1);

PaintBox3.Canvas.Pen.Color := CLBlue;
PaintBox3.Canvas.Rectangle(1, y2[min], recsize2[min], y2[min]+1);

sleep(TrackBar1.Position);

Edit5.Text := IntToStr(tausch2);
End;

End;

Edit7.Text := IntToStr(GetTickCount - Start);
end;
n0th!n
--------------------------------------------------
Ziele sind wichtiger als Erinnerungen
--------------------------------------------------
  Mit Zitat antworten Zitat