....
var
Form1: TForm1;
a:array[0..10000] of integer;
i,n,summand:integer;
cbest,mbest,cworst,mworst:longint;
implementation
{$R *.DFM}
procedure sortieren (switch:char; n: integer;var c,m :longint);
{Lokale Prozeduren: fülle Best-bzw. Worst-Feld}
Procedure best;
var i:integer;
BEGIN
for i:=1 to n do
a[i]:=i;
end;
Procedure worst;
var i:integer;
BEGIN
for i:=1 to n do
a[i]:=n-i;
end;
var i,j,x:integer;
begin
c:=0;
m:=0;
case upcase(switch) of
'B':best;
'W':worst;
END;
{Sortieralgorithmus Straight Insertion}
for i:=2 to n do
begin
inc(c);
inc(m,3);
x:=a[i];
j:=i-1;
a[0]:=x;
while x<a[j] do
begin
inc(c);
inc(m);
a[j+1]:=a[j];
j:=j-1;
end;
a[j+1]:=x;
end;
end;
{Tabelle läuft mit dem Timer}
procedure TForm1.Timer1Timer(Sender: TObject);
var quotient:real;
begin
{Aufruf jeweils eines weiteren Sortieralgorithmus' wäre leicht möglich}
sortieren('b',n, cbest,mbest);
sortieren('w',n, cworst,mworst);
{Ausgabe der Tabellenfelder; rechtsbündig; keine Proportionalschrift}
form1.stringgrid1.cells[1,i]:=format('%10d',[n]);
form1.stringgrid1.cells[2,i]:=format('%10d',[cbest]);
form1.stringgrid1.cells[3,i]:=format('%10d',[mbest]);
form1.stringgrid1.cells[4,i]:=format('%10d',[cworst]);
form1.stringgrid1.cells[5,i]:=format('%10d',[mworst]);
{Untersuchung der Proportionalität eines Zählers zum Quadrat der Anzahl}
{der Feldelemente}
quotient:=mworst/n/n;
form1.stringgrid1.cells[6,i]:=format('%10.5f',[quotient]);
{Erzeugung weiterer Tabellenzeilen}
form1.stringgrid1.rowcount:=i+3;
{Organisation der Schrittweite von n; Zehnerschritte, Hunderterschritte...}
if n mod (summand*10) =0
then summand:=summand*10;
n:=n+summand;
{Abbruch nach n=10000}
if n>10000
then begin
form1.timer1.enabled:=false;
{showmessage('Stop');}
End;
inc(i)
end;
{Zustandsänderung des Timers gem. Tastendruck}
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if form1.timer1.enabled= true
then form1.timer1.enabled:=false
else form1.timer1.enabled:=true;
end;
{Beschriftung der Tabellenheader}
procedure knoepfe;
BEGIN
form1.stringgrid1.cells[1,0]:='n';
form1.stringgrid1.cells[2,0]:='C ';
form1.stringgrid1.cells[3,0]:='M ';
form1.stringgrid1.cells[4,0]:='C ';
form1.stringgrid1.cells[5,0]:='M ';
form1.stringgrid1.cells[6,0]:='Mworst/n^2 ';
form1.stringgrid1.cells[0,1]:='Start und ';
form1.stringgrid1.cells[0,2]:='Abbruch mit';
form1.stringgrid1.cells[0,3]:='Taste';
END;
procedure TForm1.FormCreate(Sender: TObject);
begin
knoepfe;
i:=1;
n:=10;
summand:=10;
end;
initialization
showmessage('Dies Programm gibt die Zähler aus für SI;'+chr(13)+
+'höchstens 10000 Zahlen werden sortiert.'+chr(13)+'C.Schmitt; 11.99'+chr(13)+chr(13)+'Abbruch mit Tastendruck');
end.