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