Задание: реализовать алгоритм быстрой сортировки Хоара на Delphi.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const N=40;
var
Form1: TForm1;
mas: array[1..N] of integer;
implementation
{$R *.dfm}
procedure sort(l, r: integer);
var
i,j,temp: integer;
left: boolean;
begin
left:=true;
if (r-l)>=1 then
begin
i:=l;
j:=r;
while i<>j do
begin
if left=true then begin
if mas[i]<=mas[j] then
begin
j:=j-1;
end
else
begin
temp:=mas[i];
mas[i]:=mas[j];
mas[j]:=temp;
inc(i);
left:=false;
end;
end
else
begin
if mas[i]<=mas[j] then
begin
inc(i);
end
else
begin
temp:=mas[i];
mas[i]:=mas[j];
mas[j]:=temp;
j:=j-1;
left:=true;
end;
end;
end;
sort(l, i-1);
sort(j+1, r);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
randomize;
Label1.Caption:='';
for i:=1 to N do
begin
mas[i]:=random(100);
Label1.Caption:=Label1.Caption+' '+IntToStr(mas[i]);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
Label2.Caption:='';
sort(1,N);
for i:=1 to N do
Label2.Caption:=Label2.Caption+' '+IntToStr(mas[i]);
end;
end.
Похожие записи
No user прокомментировали сообщение
Оставить комментарий