1.3.2 Приложение на Delphi, в котором представлена работа некоторых методов сортировки и поиска

Графический интерфейс представлен на рисунке 1.14.


Рисунок 1.14 – Форма

uses wseme1;

procedure TForm1. Button16Click (Sender: TObject);

begin

close;

end;

procedure TForm1. Button1Click (Sender: TObject);

var i:integer;

begin

 // генерируем множество, состоящее из случайных чисел

Randomize;

for i:=0 to StringGrid1. RowCount do

StringGrid1. Cells [0, i]:=IntToStr (Random(10000)+1);

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

Button1. Click();

end;

procedure TForm1. Edit1Exit (Sender: TObject);

begin

 // проверяем заполнено ли поле

if edit1. Text='' then begin

MessageDlg ('Введите число не больше 15', mtError, [mbOk, mbCancel], 0);

exit; end else

StringGrid1. RowCount:=strtoint (edit1. Text);

StringGrid2. RowCount:=strtoint (edit1. Text);

end;

procedure TForm1. Button3Click (Sender: TObject);

var

n, minimum, j, i, obmen:integer;

a:array [1..15] of integer;

begin

n:=strtoint (edit1. Text);

 // задание массива

for j:=1 to n do

a[j]:=StrToInt (StringGrid1. Cells [0, j‑1]);

for j:=1 to n do begin

 // номер минимального элемента

minimum:=j;

for i:=j+1 to n do if a[i] < a [minimum] then minimum:=i;

 // запоминание минимального элемента

obmen:=a[j];

a[j]:=a[minimum];

a[minimum]:=obmen;

 // вывод отсортированного массива

for i:=0 to n do

stringgrid2. Cells [0, j‑1]:=inttostr (a[j]);

end;

end;

procedure TForm1. Button4Click (Sender: TObject);

var

n, obmen, i, j:integer;

a:array [1..15] of integer;

colicobmen:boolean;

begin

n:=strtoint (edit1. Text);

 // задание массива

for i:=1 to n do

a[i]:= StrToInt (StringGrid1. Cells [0, i‑1]);

 // сортировка массива

repeat

colicobmen:=FALSE;

for j:=1 to n‑1 do

if a[j] > a [j+1] then

begin

obmen:=a[j];

a[j]:=a [j+1];

a [j+1]:=obmen;

colicobmen:=TRUE;

end;

 // вывод массива

for i:=1 to n do

stringgrid2. Cells [0, i‑1]:=inttostr (a[i]);

until not colicobmen;

stringgrid2. Cells [0, i‑1]:=inttostr (a[i]);

end;

procedure TForm1. Button5Click (Sender: TObject);

var

a:array [1..15] of integer;

i, j, m, L, R, n, x:integer;

begin

n:=strtoint (edit1. Text);

 // задание массива

for i:=1 to n do

a[i]:=StrToInt (StringGrid1. Cells [0, i‑1]);

 // алгоритм сортировки двоичным включением

for i:=2 to n do

begin

x:=a[i];

L:=1;

R:=i;

while L<R do begin

m:=(L+R) div 2;

if a[m]<=x then L:=m+1 else R:=m;

end;

for j:=i downto R+1 do a[j]:=a [j‑1];

a[R]:=x;

end;

 // вывод отсортированного массива

for i:=1 to n do

stringgrid2. Cells [0, i‑1]:=inttostr (a[i]);

end;

procedure TForm1. Button6Click (Sender: TObject);

const t=15;

var

n:integer;

a:array [1..15] of integer;

i, j, k, s:integer;

x:integer;

m:1..t;

h:array [1..t] of integer;

begin

n:=strtoint (edit1. Text);

 // задание массива

for i:=1 to n do

a[i]:=StrToInt (StringGrid1. Cells [0, i‑1]);

 // алгоритм Шелла

h[1]:=9;

h[2]:=5;

h[3]:=3;

h[4]:=1;

for m:=1 to t do

begin k:=h[m];

s:=-k;

 // барьеры для каждого шага

for i:=k+1 to n do

begin x:=a[i];

j:=i-k;

if s=0 then s:=-k;

s:=s+1;

a[s]:=x;

while x<a[j] do begin a [j+k]:=a[j];

j:=j-k;

end;

a [j+k]:=x;

end;

end;

 // вывод отсортированного массива

for i:=1 to n do

stringgrid2. Cells [0, i‑1]:=inttostr (a[i]);

end;

procedure TForm1. Button7Click (Sender: TObject);

var

n:integer;

a:array [1..15] of integer;

L, R, x, k:integer;

procedure sift (L, R:integer);

var

i, j:integer;

x, y:integer;

begin

i:=L;

j:=2*L;

x:=a[L];

if (j<R) and (a[j]<a [j+1]) then j:=j‑1;

while (j<=R) and (x<a[j]) do begin y:=a[i];

a[i]:=a[j];

a[j]:=y;

a[i]:=a[j];

i:=j;

j:=2*j;

if (j<R) and (a[j]<a [j+l]) then j:=j+l;

end;

end;

begin

n:=strtoint (edit1. Text);

 // задание искомого массива

for k:=1 to n do

a[k]:=StrToInt (StringGrid1. Cells [0, k‑1]);

 // алгоритм сортировки с помощью дерева

 // построение пирамиды

L:=(n div 2)+1;

R:=n;

while L>1 do begin L:=L‑1;

SIFT (L, R);

end;

 // сортировка

while R>1 do begin x:=a[l];

a[l]:=a[R];

a[R]:=x;

R:=R‑1;

SIFT (1, R);

end;

 // вывод отсортированного массива

for k:=1 to n do

stringgrid2. Cells [0, k‑1]:=inttostr (a[k]);

end;

procedure TForm1. Button8Click (Sender: TObject);

var

n:integer;

a:array [1..15] of integer;

i, j, x:integer;

begin

n:=strtoint (edit1. Text);

 // задание искомого массива

for i:=1 to n do

a[i]:=StrToInt (StringGrid1. Cells [0, i‑1]);

 // алгоритм пузырьковой сортировки

for i:=2 to n do for j:=n downto i do begin

if a [j‑1]>a[j] then begin x:=a [j‑1];

a [j‑1]:=a[j];

a[j]:=x;

end;

end;

 // вывод отсортированного массива

for i:=1 to n do

stringgrid2. Cells [0, i‑1]:=inttostr (a[i]);

end;

procedure TForm1. Button9Click (Sender: TObject);

var

n:integer;

a:array [1..15] of integer;

i, j, k, L, R, x: integer;

begin

n:=strtoint (edit1. Text);

 // задание искомого массива

for i:=1 to n do

a[i]:=StrToInt (StringGrid1. Cells [0, i‑1]);

 // алгоритм шейкерной сортировки

L:=2;

R:=-n;

k:=n;

repeat

for i:=2 to n do

for j:=-R downto L do begin

if a [j‑1]>a[j] then begin x:=a [j‑1];

a [j‑1]:=a[j];

a[j]:=x;

k:=j;

end;

end;

L:=k+1;

for i:=2 to n do

for j:=L to R do begin

if a [j‑1]>a[j] then begin x:=a [j‑1] end else

a [j‑1]:=a[j];

a[j]:=x;

k:=-j;

end;

R:=k‑1;

until L>R;

 // вывод отсортированного массива

for i:=1 to n do

stringgrid2. Cells [0, i‑1]:=inttostr (a[i]);

end;

procedure TForm1. Button10Click (Sender: TObject);

var

n:integer;

a:array [1..15] of integer;

i:integer;

procedure sort (L, R: integer);

var

i, j:integer;

x, y:integer;

begin

i:=L;

j:=R;

x:=a[(L+R) div 2];

repeat

while a[i]<x do i:=i+l;

while x<a[j] do j:=j‑1;

if i<=j then begin y:=a[i];

a[i]:=a[j];

a[j]:=y;

i:=i+l;

j:=j-l;

end;

until i>j;

if L<j then SORT (L, j);

if i<R then SORT (i, R);

end;

begin

n:=strtoint (edit1. Text);

 // задание искомого массива

for i:=1 to n do

a[i]:=StrToInt (StringGrid1. Cells [0, i‑1]);

 // алгоритм быстрой сортировки

 // рекурсивная процедура

SORT (1, n);

 // вывод отсортированного массива

for i:=1 to n do

stringgrid2. Cells [0, i‑1]:=inttostr (a[i]);

end;

procedure TForm1. Button17Click (Sender: TObject);

begin

AboutBox.showmodal;

end;

end.



Информация о работе «Основы дискретной математики»
Раздел: Информатика, программирование
Количество знаков с пробелами: 179431
Количество таблиц: 27
Количество изображений: 82

Похожие работы

Скачать
11313
1
5

... Е и множество и мы рассматриваем все его подмножества, то множество Е называется униварсельным. Пример: Если за Е взять множество книг то его подмножества: художественные книги, книги по математике, физики, физики … Если универсальное множество состоит из n элементов, то число подмножеств = 2n. Если , состоящее из элементов E, не принадлежащих А, называется дополненным. Множество можно задать: ...

Скачать
6003
0
1

в и формальных систем является центральной в дисциплине. В настоящие время от нее возникли ответвления, например, разработка алгоритмических языков программирования.Одной из важнейших проблем в дискретной математики является проблема сложности вычислений.Теория сложности вычислений помогает оценить расход времени и памяти при решении задач на ЭВМ. Теория сложности позволяет выделить объективно ...

Скачать
14778
4
22

... которой были разработаны в последней четверти 19 века Георгом Кантором. Цель контрольной работы – ознакомится с основными понятиями и методами решения по дискретной математике, уметь применить полученные знания при решении практического задания. Задание 1 Представить с помощью кругов Эйлера множественное выражение . Используя законы и свойства алгебры множеств, упростить заданное ...

Скачать
34329
6
25

элементы теории нечетких множеств можно применять для решения экономических задач в условиях неопределённости. 1. применение Логических функций   1.1 Применение методов дискретной математики в экономике   При исследовании, анализе и решении управленческих проблем, моделировании объектов исследования и анализа широко используются методы формализированного представления, являющегося предметом ...

0 комментариев


Наверх