Разработать диалоговую программную систему, позволяющую оценить время выполнения различных алгоритмов упорядочения числовых массивов. Алгоритмы сортировки оформить в виде подпрограмм.
Вот мой набросок
Код:
program sravnenie;
const
Nmax=100000;
Np=10;
Smax=6;
maststr:array[1..smax] of string=('input','bubble','insert','choice','output','exit');
type
Tvector=array[1..Nmax] of word;
Tstring=array[1..Smax] of string;
Tindex = 1..Nmax;
function menu(s: TString; ns: word): word;
var
i: word;
k: word;
begin
for i := 1 to ns do
writeln(s[i]);
writeln('Введите номер пункта');
readln(k);
result := k;
end;
procedure input(var a:Tvector; n:word);
var
na:word;
c, d, e: Tvector;
begin
randomize;
writeln('Введите количество элементов массива');
readln(na);
for i:=1 to na do
a[i]:=random(10000);
writeln('unsort.arr.');
for i:=1 to Np do
write(a[i]:8);
writeln;
c[i]:=a[i];
d[i]:=a[i];
e[i]:=a[i];
end;
procedure bubble(var c:Tvector; n:word);
var
z:Tvector;
k:integer;
flag:boolean;
b:word;
begin
t1 := Milliseconds;
flag:=false;
for k:=1 to n-1 do
if c[k]>c[k+1] then
b:=c[k+1];
c[k+1]:=c[k];
c[k]:=b;
flag:=true;
N:=N-1;
t2 := Milliseconds;
time_bubble := t2 - t1;
writeln('После сортировки пузырьком: ');
for i:=1 to N do
write(c[i],' ');
writeln;
z[i]:=c[i];
end;
procedure insert(var d:Tvector; n:word);
var
i,R,k:word;
z:Tvector;
i:word;
na:word;
begin
t3 := Milliseconds;
for i:=2 to na do
if d[i-1] > d[i] then
begin
R:=d[i];
k:=k-1;
while (k > 0)and(a[k] > R) do
begin
d[k+1]:=d[k];
k:=k-1;
end;
d[k+1]:=R;
t4 := Milliseconds;
time_insert := t4 - t3;
end;
writeln('После сортировки вставками: ');
for i:=1 to N do
write(d[i],' ');
writeln;
z[i]:=d[i];
end;
procedure choice(var e: Tvector; n: word);
var
k, j, index: word;
min: word;
z: Tvector;
begin
t5 := Milliseconds;
for k:=1 to n-1 do
begin
min:=e[k];
index:=k;
for j:=k+1 to n do
if e[j]<min then
begin
min:=e[j];
index:=j;
end;
e[index]:=e[k];
e[k]:=min;
t6 := Milliseconds;
time_choice := t6 - t5;
end;
writeln('После сортировки выбором: ');
for i:=1 to N do
write(e[i],' ');
writeln;
z[i]:=e[i];
end;
procedure output(var a, z:Tvector; i: word);
var
na:word;
time_choice, time_insert, time_bubble: real;
begin
writeln('unsort_arr:');
for i:=1 to Np do
write(a[i]:8);
writeln;
case t_Sort of
1: begin
writeln(bubble[2]);
writeln('Время выполнения ', time_bubble, ' ms');
end;
2: begin
writeln(insert[3]);
writeln('Время выполнения ', time_insert, ' ms');
end;
3: begin
writeln(choice[4]);
writeln('Время выполнения ', time_choice, ' ms');
end;
5: begin
writeln('Тип сортировки',' ','Время работы');
writeln('booble[2]',' ','(time_bubble):10''ms');
writeln('insert[3]',' ','(time_insert):10''ms');
writeln('choice[4]',' ','(time_choice):10''ms');
end;
writeln('sort_arr:');
for i := 1 to Np do
write(z[i]:8);
writeln;
var
k:word;
begin
if k<6 and k>1 then
repeat
k:=menu(maststr,Smax);
case k of
1: input(a, n);
2: bubble(c, n);
3: insert(d, n);
4: choice(e, n);
5: output;
end;
until k=Smax;
else
writeln('Неправильный номер');
end;
________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!
Модератор.