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!