unit UTest2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Borland.Vcl.Grids, System.ComponentModel, Borland.Vcl.StdCtrls;
type
feldtyp =
array[-4..7]
of integer;
{Achtung auf die Indizierung}
TForm1 =
class(TForm)
Memo1: TMemo;
StringGrid1: TStringGrid;
BStart: TButton;
procedure FormCreate(Sender: TObject);
procedure BStartClick(Sender: TObject);
procedure sortierverfahren(
var temp:feldtyp;rechts:integer);
procedure ausgabe(z:integer);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
i, zeile : integer;
a: feldtyp;
implementation
{$R *.nfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
zeile:=0;
a[1]:=35;a[2]:=38;a[3]:=56;a[4]:=42;a[5]:=26;a[6]:=9;a[7]:=4;
for i:= 1
to 7
do begin
stringgrid1.cells[i,zeile]:='
a['+inttostr(i)+'
]';
stringgrid1.Cells[i,zeile+1]:=inttostr(a[i]);
end;
stringgrid1.cells[0,zeile+1]:='
Start';
zeile:=zeile+2;
end;
procedure TForm1.Sortierverfahren(
var temp: feldtyp; rechts:integer);
const t=3;
var x,i,j,k,s:integer;
m : 1..t;
{m kann Werte von 1 bis t annehmen}
h:feldtyp;
begin
h[1]:=5;
h[2]:=3;
h[3]:=1;
for m:= 1
to t
do begin
k:=h[m];
s:= -k;
for i:=k+1
to rechts
do begin
x:=temp[i];
j:=i-k;
if s=0
then s := -k;
s:=s+1;
temp[s]:=x;
while x < temp[j]
do begin
temp[j+k]:=temp[j];
j:=j-k;
end;
temp[j+k]:=x;
end;
end;
end;
procedure TForm1.ausgabe(z:integer);
begin
for i:= 1
to 7
do
stringgrid1.cells[i,z]:=inttostr(a[i]);
zeile:=zeile+1;
end;
procedure TForm1.BStartClick(Sender: TObject);
begin
sortierverfahren(a,7);
stringgrid1.Cells[0,zeile]:='
Ergebnis';
ausgabe(Zeile);
end;
end.