![]() |
Frage: Warum funtioniert dieses bublbesort nicht?
Ich hab da mal ne frage: ich versuche ein bubblesort zu programmieren mit delphi 3. Dann schau ich hier in die Hilfe und finde "swapvalues", die delphi 3 nicht kennt. swap funktioniert nicht und dieses programm unten sortiert nicht gescheit und entfernt Zahlen(zahlenreihe 1,5,3,2:daraus wird 1,3,3,2). Warum? ich bin noch neu und hab mal so gar keine Peilung. Bitte helft mir mal. Danke im voraus.
Hier der Quelltext
SQL-Code:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; memo2: TMemo; procedure Button1Click(Sender: TObject); private { Private-Deklarationen} public { Public-Deklarationen} end; var Form1: TForm1; zufall : Array[1..200] of integer; vergleich: array [1..200] of integer; n,x,x1,x2,y:integer; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin //höchstzahl array N:= 1; repeat zufall[n]:= trunc(random(100)); //zufallszahlen werden zugewiesen memo1.lines.add (inttostr(zufall[n])); //ausgabe zufallszahlen vergleich[n]:=zufall[n]; //vergleichsarray n:=n+1; until n = 200; x:=1; repeat If zufall[x] > vergleich[x+1] Then //vergleich zufall[x]:=vergleich[x+1]; //tauschen memo2.lines.add (inttostr(zufall[x])); //ausgabe x:=x+1; until x =200; end; end. |
Re: Frage: Warum funtioniert dieses bublbesort nicht?
Schau mal hier:
![]() Edit: ... und hier: ![]() |
Re: Frage: Warum funtioniert dieses bublbesort nicht?
SwapValues könnte z.B. so aussehen:
Delphi-Quellcode:
[edit] Der Sinn des Vergleichsarrays ist mir in Deinem Code verborgen geblieben, zumal Du das zu sortierende Array damit vergleichst :gruebel: [/edit]
procedure SwapValues(var a,b: integer);
begin a := a xor b; b := b xor a; a := a xor b; end; {Verständlichere Variante mit einer Hilfsvariablen: procedure SwapValues(var a,b: integer); var temp: integer; begin temp := a; a := b; b := temp; end;} |
Re: Frage: Warum funtioniert dieses bublbesort nicht?
Zitat:
Kein Wunder also, dass die 3 auf 1-mal 2 mal da ist und die 5 weg. Benutze eine Hilfsvariable und mache einen Dreieckstausch:
Delphi-Quellcode:
So tauscht du
hilf:=zufall[x]
zufall[x]:=vergleich[x+1]; vergleich[x+1]:=hilf; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz