HI cih bins mal wieder!
Dieses mal eine Frage zum Sortieren, soviel cih weiß heißt mein Algorithmus "mischsortieren".
bei mir sollen generierte Zahlen aus einem Array in sortiert und in einem Stringrid ausgegeben werden.
Allerdings erscheinen immer nur Nullen.
Vielleicht findet jemand den Fehler!
Meine Variablen:
Delphi-Quellcode:
var
Form1: TForm1;
const anz=100000;
const groesstzahl=10000;
var Zahl:Array[1..Anz] of Integer;
type Tzahlen = Array[1..Anz] of Integer;
var Zahlen:tzahlen;
die Prozedur:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var J:Integer;
procedure Mischsort(var A:tzahlen; n:Integer);
procedure Mische(li, mi, re:Integer);
var i, erster1, letzter1, erster2, letzter2:Integer; hilfe:tzahlen;
begin
erster1:= li;
letzter1:=mi;
erster2:=mi+1;
letzter2:=re;
i:=erster1;
while ((a[erster1]<a[letzter1]) and (a[erster2]<=a[letzter2])) DO
begin
IF a[erster1] < a[erster2] then
begin
HILFE[i]:=a[erster1];
inc(erster1);
inc(i);
end
else
begin
HILFE[i]:=a[erster2];
inc(erster2);
inc(i);
end;
end;
while a[erster1] <= a[letzter1] DO
begin
hilfe[i]:=a[erster1];
inc(i);
inc(erster1);
end;
while a[erster2] <= a[letzter2] DO
begin
hilfe[i]:=a[erster2];
inc(erster2);
inc(i);
end;
end;
procedure Mischsortiere(links, rechts:Integer);
var Mitte:Integer;
BEGIN
if links < rechts then
begin
Mitte:=(links+rechts) Div 2;
Mischsortiere(links, Mitte);
Mischsortiere(MItte+1, rechts);
mische(links, Mitte, rechts);
end;
end;
begin
Mischsortiere(1,n);
end;
begin
mischsort(zahlen,anz);
for J:=1 to anz do
grid.cells[j,3]:=inttostr(zahlen[j]);
end;
Danke!