Einzelnen Beitrag anzeigen

jonsen2.0.0.9

Registriert seit: 5. Dez 2009
67 Beiträge
 
Delphi 7 Personal
 
#1

Sortieren funktioniert nicht

  Alt 2. Feb 2010, 19:38
Hallo,

so in der Schule arbeiten wir jetzt mit arrays...deshalb hab ich mal Bubble Sort versucht.

Ich finde aber den fehler nicht....das funktioniert bei mir irgendwie nicht

Außerdem fände ich es toll wenn ihr mir verbesserungen z.B. bei meiner repeat-until schlife geben würdet.

Mein Programm is halt noch nich so gut

Delphi-Quellcode:
var
  Form1: TForm1;
  ar:array[1..100] of integer;
  temp:integer; //in temp sicher ich einen wert

implementation

{$R *.dfm}

procedure sortieren();
Var i,i2:integer;
    a,a2,sicher:integer; //sicher ist damit keine entlosschleife entsteht...is bis jetzt immer so gewesen :(
begin
sicher:=0;
repeat
 sicher:=sicher+1;
 a2:=100; //a2 gibt an wie oft die for i to do schleife laufen soll
 a:=0;
 for i:=1 to 100 do
  if ar[i]>ar[i+1] then //wenn ar[i] kleiner ist als ar[i+1] dann soll
   begin
    temp:=ar[i]; //temp su ar[i] werden
    ar[i]:=ar[i+1]; //ar[i] kann ich dann mit ar[i+1] überschreiben
    ar[i+1]:=temp; //und ar[i+1] mit dem ursprünglichen wert von ar[i] ersetzen
   end;
 for i2:=1 to a2 do
  if ar[i]<=ar[i+1] then
   a:=a+1 //hier gucke ich ob ALLE passen....wenn nicht wird noch einmal sortiert
  else
   a2:=100;
until (a>=100) or (sicher>=10000000) //wenn entweder 10.000.000 mal sortiert wurde oder alles passt wird beendet
end;

procedure fuellen();
Var i:integer;
begin
for i:=1 to 100 do
 ar[i]:=random(999)+1; //hier wird mein array gefüllt
end;


procedure TForm1.Button1Click(Sender: TObject);
Var i:integer;
begin
fuellen;
for i:=1 to 100 do
 begin
  listbox1.Items.Delete(i);
  listbox1.Items.Add(inttostr(ar[i])); //hier wird die listbox in der die zahlen stehen sollen gefüllt.
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;

procedure TForm1.Button2Click(Sender: TObject);
Var i:integer;
begin
sortieren;
for i:=1 to 100 do
 begin
  listbox1.Items.Delete(i);
  listbox1.Items.Add(inttostr(ar[i]));
 end;
end;

end.
Danke schonmal

MFG
Jonsen
  Mit Zitat antworten Zitat