Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - BubbleSort funktioniert nicht
Maximal - Mo 19.04.10 20:17
Titel: BubbleSort funktioniert nicht
Hay
Ich hab ein Programm geschrieben, dass in Listbox 1 100 Variablen zufällig erzeugen soll und in Listbox 2 sollen diese dann sortiert erscheinen.
Dafür wollte ich eigentlich den BubbleSort benutzen. Leider bin ich nicht so der Delphi Meister und habe daher einfach den BubbleSort Code kopiert und dann versucht in mein Programm einzufügen.
Leider funktioniert das nich.
Kann sich vielleicht bitte mal jemand meinen Quelltext ansehen?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm1.Panel1Click(Sender: TObject); var merke,N,k,j,m,i:integer; data:array[1..100] of integer;
begin for N:=1 to 100 do begin data[N]:=random(1000); listbox1.items.add(inttostr(data[N])); end;
For i:= N downto 1 Do For j:= 1 To i Do If (Data[j-1] > Data[j]) Then merke := data[j]; data[j] := data[j-1]; data[j-1] := merke;
for m := 1 to 100 do begin listbox2.items.add(inttostr(data[m])); end; end;
end. |
schon mal danke für das lesen meines Thread ind ich hoffe ich nerv euch nicht mit dieser noob frage...
mfg Max
Moderiert von
Narses: Delphi-Tags hinzugefügt
Bergmann89 - Mo 19.04.10 20:33
Hey,
da fehlt ein Begin und ein End und das N im Schleifenkopf war falsch:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Panel1Click(Sender: TObject); var merke,N,k,j,m,i:integer; data:array[1..100] of integer; begin for N:=1 to 100 do begin data[N]:=random(1000); Listbox1.Items.add(IntToStr(data[N])); end;
for i:= High(data) downto 1 do for j:= 1 to i do if (Data[j-1] > Data[j]) then begin merke := data[j]; data[j] := data[j-1]; data[j-1] := merke; end;
for m := 1 to 100 do begin listbox2.items.add(IntToStr(data[m])); end; end; |
Und wenn du das nächste mal Quelltext postest, schreib den bitte in Delphi-Tags, dann sieht das so aus wie bei mir oben, da kammer das besser lesen:
<span class="inlineSyntax"><span class="codecomment">{PROTECTTAGa3bdd7c58add8a2f8110891a84fc177e}</span></span> ;)
Das n un das m in der ersten bzw. letzten Schleife könnte man auch durch ein i ersetzen, das spart speicherplatz :D aber ich glaub das is erstma nich so wichtig^^
€: du solltest den Quelltext aber nicht nur kopieren, sondern auch versuchen ihn zu verstehen, denn nur so kommst du dahinter wie man das dann mal selbst machen kann :mahn:
MfG Bergmann.
delphi10 - Di 20.04.10 00:00
Zwischen
Delphi-Quelltext
1: 2:
| begin for N:=1 to 100 do begin |
wäre ein
zwecks Initialisierung ganz nützlich.
elundril - Di 20.04.10 09:23
eigentlich wirde ein randomize; eher ins FormCreate gehören weil man randomize nur ein mal aufrufen sollte.
lg elundril
Maximal - Do 22.04.10 21:56
FormCreate?
Also in der Schule im Infounterricht haben wir das so gelernt:
Delphi-Quelltext
1: 2: 3: 4:
| for N:=1 to 100 do begin data[N]:=random(1000); end; |
Darf ich mal fragen was eine Initialisierung bringen würde bzw. warum man randomize nur ein mal aufrufen sollte?
Vielen Dank für die Antworten
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!