unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
n=
7
;
type
TForm1 =
class
(TForm)
Memo1: TMemo;
Memo2: TMemo;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
procedure
Button3Click(Sender: TObject);
procedure
Button1Click(Sender: TObject);
procedure
Button2Click(Sender: TObject);
private
public
end
;
type
SEQ=
array
[
1..
N]
of
integer
;
procedure
Sort;
var
Form1: TForm1;
i:
byte
;
a:SEQ;
implementation
{$R *.dfm}
procedure
TForm1
.
Button3Click(Sender: TObject);
begin
Form1
.
Close;
end
;
procedure
TForm1
.
Button1Click(Sender: TObject);
var
s:
Ansistring
;
z:
byte
;
begin
z:=
1
;
for
i:=
1
to
n
do
s:=s+Edit1
.
Text[i];
if
Edit1
.
Text[i]=
' '
then
begin
a[z]:=StrToInt(s);
s:=
''
;
z:=z+
1
;
end
;
Memo1
.
Lines
.
Add(Edit1
.
Text);
end
;
procedure
TForm1
.
Button2Click(Sender: TObject);
begin
Sort;
for
i:=
1
to
n
do
Memo1
.
Lines
.
Add(inttostr(a[i]));
end
;
procedure
Sort(
var
a:seq);
var
d,i,t:
integer
;
k:
boolean
;
begin
d:=N
div
2
;
begin
k:=
true
;
while
k
do
begin
k:=
false
;
i:=
1
;
for
i:=
1
to
N-d
do
begin
if
a[i]>a[i+d]
then
begin
t:=a[i];
a[i]:=a[i+d];
a[i+d]:=t;
k:=
true
;
end
;
d:=d
div
2
;
end
;
end
;
end
;
end
;
end
.