Einzelnen Beitrag anzeigen

diavy

Registriert seit: 11. Apr 2012
54 Beiträge
 
#20

AW: Problem beim Verwenden von Excel

  Alt 15. Dez 2012, 15:16
Ich habe nun ein weiteres Problem.

Und zwar wollte ich zum Sortieren von Resultaten quicksort benutzen.

Diebezüglich mein Code:

Delphi-Quellcode:
procedure switch(var a,b:integer);
var aux:integer;
begin
aux:=a;
a:=b;
b:=aux;
end;

function seperate(var a:array of integer;l,r:integer):integer;
var i,j,pivot:integer;
begin
pivot:=a[r];
i:=l; j:=r-1;
while i<=j do
        if a[i]<pivot then inc(i)
        else if a[j]>pivot then j:=j-1
        else begin
                switch(a[i],a[j]);
                inc(i);
                j:=j-1;
                end;
switch(a[i],a[r]);
result:=i;
end;

procedure quicksort(var a:array of integer;l,r:integer);
var i:integer;
begin
if l<r then begin
        i:=seperate(a,l,r);
        quicksort(a,l,i-1);
        quicksort(a,i+1,r);
        end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var test:array[1..20] of integer;I:integer;
begin
test[1]:=21;test[2]:=7;test[3]:=12;test[4]:=99;test[5]:=72;test[6]:=3;test[7]:=50;test[8]:=59;test[9]:=17;test[10]:=190;
test[11]:=8;test[12]:=19;test[13]:=44;test[14]:=87;test[15]:=6;test[16]:=0;test[17]:=55;test[18]:=59;test[19]:=16;test[20]:=29;
quicksort(test,1,20);
for i:=20 downto 1 do
ShowMessage(IntToStr(test[i]));
end;
Dies klappt soweit auch, bis auf die Stelle 1 im Array, die bleibt nämlich unverändert. Mit den Beispielwerten die ich zum Test eingefügt habe, wird so mit der for downto Schleife als letzte MessageBox 21 angezeigt.

Ich bin den Code mehrmals durchgegangen und kann den Fehler nicht finden...
  Mit Zitat antworten Zitat