Einzelnen Beitrag anzeigen

Fluchtfahrzeug

Registriert seit: 20. Nov 2012
4 Beiträge
 
#1

Anfänger Frage (Listbox Werte sortieren)

  Alt 20. Nov 2012, 15:23
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;

Geändert von Fluchtfahrzeug (20. Nov 2012 um 15:32 Uhr)
  Mit Zitat antworten Zitat