Hallo Leute ich hab mal eine Frage zu Sortieralgorithmen. Und zwar hab ich mich an einen Programm versucht, dass bei einem Klick auf einem Button eine Zufallszahl generiert. Diese Zahl soll in einer Listbox ausgegeben werden. Wenn man jetzt den Button nochmal drückt, soll eine weitere Zufallszahl in der Listbox erscheinen. Die Zahlen sollten der größte nach geordnet werden. Die größte Zahl sollte ganz oben in der Listbox sein. Was ich bisher habe ist überschaubar:
Delphi-Quellcode:
var
Form1: TForm1;
implementation
var zahl: integer;
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
zahl:=random(100)+1;
memo1.lines.add(floattostr(zahl));
listbox1.items:=memo1.lines;
listbox1.sorted:=true;
memo1.lines:=listbox1.items;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;
end.
Das Programm erstellt Zufallszahlen die erst in einem Memo erscheinen und dann in der Listbox. Sie werden auch sortiert nur halt nicht richtig. Alles mit einer 1 vorne ist ganz oben. Alles mit einer 9 vorne ganz unten.
Ich habe im Internet viel über Bubblesort gelesen. Allerdings weiß ich nicht so recht, wo ich diesen Sortieralgorithmus anwenden soll. Kann ich Bubblesort für mein Programm benutzen und wo muss ich diesen Code den jetzt genau reinpacken? Ich hoffe mir kann jemand helfen ohne gleich böse zu werden, dass ich eine solche Anfängerfrage stelle.
Delphi-Quellcode:
BubbleSort(ListBox1.Items);
procedure TForm1.BubbleSort(Items: TStrings); var done: boolean; i, n: integer;
Dummy: string;
begin
n := Items.Count;
repeat
done := true;
for i := 0 to n - 2 do
if Items[i] > Items[i + 1] then
begin
Dummy := Items[i];
Items[i] := Items[i + 1];
Items[i + 1] := Dummy;
done := false;
end;
until done;
end;