Министерство образования Республики Беларусь
Учреждение образования «Гомельский государственный университет имени
Франциска Скорины»
Физический факультет
Кафедра радиофизики и электроники
Отчет
по лабораторной работе № 15
TURBO PASCAL.
РАБОТА С ГЛАВНЫМ МЕНЮ СИСТЕМЫ.
ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ МАССИВОВ.
МЕТОДЫ СОРТИРОВКИ
Выполнил
студент группы Ф-11 В. Н. Карась
Проверил
доцент кафедры общей физики В. В. Свиридова
Гомель
2008
Цель: Изучить команды режима OPTIONS (до ENVIROMENT) среды Turbo Pascal версии 7.0. Усвоить правила работы с переменными типа массив языка программирования Pascal. Изучить методы сортировки. Приобрести дальнейшие навыки по отладке программ.
Задание: Отсортировать массив всеми известными методами сортировки. Построить таблицу анализа скорости и количества сравнений методов
program lab_15;
uses crt;
var
buf,i,n,j,d:integer;
switch: boolean;
k:char;
a,b:array [1..20] of integer;
schetchik: array [1..4] of byte;
skorost: array [1..4] of real;
begin
clrscr;
writeln('введите число элементов массива <=20');
readln(n);
writeln('введите элементы массива');
for i:=1 to n do
readln(b[i]);
writeln('сортировка по неубыванию? (y/n)');
readln(k);
schetchik[1]:=0;
for i:=1 to n do
a[i]:=b[i];
if k='y' then
repeat
schetchik[1]:=schetchik[1]+1;
switch:=false;
for i:=1 to n-1 do
if a[i]>a[i+1] then
begin
switch:=true;
buf:=a[i];
a[i]:=a[i+1];
a[i+1]:=buf;
end;
until switch=false;
if k='n' then
repeat
schetchik[1]:=schetchik[1]+1;
switch:=false;
for i:=1 to n-1 do
if a[i]<a[i+1] then
begin
switch:=true;
buf:=a[i];
a[i]:=a[i+1];
a[i+1]:=buf;
end;
until switch=false;
schetchik[2]:=0;
for i:=1 to n do
a[i]:=b[i];
if k='y' then
for j:=1 to n-1 do
for i:=1 to n-j do
begin
schetchik[2]:=schetchik[2]+1;
if a[i]>a[i+1] then
begin
buf:=a[i];
a[i]:=a[i+1];
a[i+1]:=buf;
end;
end;
if k='n' then
for j:=1 to n-1 do
for i:=1 to n-j do
begin
schetchik[2]:=schetchik[2]+1;
if a[i]<a[i+1] then
begin
buf:=a[i];
a[i]:=a[i+1];
a[i+1]:=buf;
end;
end;
schetchik[3]:=0;
for i:=1 to n do
a[i]:=b[i];
if k='y' then
for j:=2 to n do
begin
d:=a[j];
i:=j-1;
while d<a[i] do
begin
schetchik[3]:=schetchik[3]+1;
a[i+1]:=a[i];
i:=i-1;
end;
a[i+1]:=d;
end;
if k='n' then
for j:=2 to n do
begin
d:=a[j];
i:=j-1;
while d>a[i] do
begin
schetchik[3]:=schetchik[3]+1;
a[i+1]:=a[i];
i:=i-1;
end;
a[i+1]:=d;
end;
schetchik[4]:=0;
for i:=1 to n do
a[i]:=b[i];
if k='y' then
for i:=1 to n-1 do
for j:=1 to n-1 do
begin
schetchik[4]:=schetchik[4]+1;
if a[j]>a[j+1] then
begin
buf:=a[j];
a[j]:=a[j+1];
a[j+1]:=buf;
end;
end;
if k='n' then
for i:=1 to n-1 do
for j:=1 to n-1 do
begin
schetchik[4]:=schetchik[4]+1;
if a[j]<a[j+1] then
begin
buf:=a[j];
a[j]:=a[j+1];
a[j+1]:=buf;
end;
end;
for i:=1 to 4 do
skorost[i]:=n/schetchik[i];
writeln('отсортированный массив:');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln(' ':38,'количество сравнений', ' ':5, 'скорость');
writeln('методом попарного сравнения', ' ':20, schetchik[1], ' ':17, skorost[1]:2:2);
writeln('методом простого обмена', ' ':24, schetchik[2], ' ':17, skorost[2]:2:2);
writeln('методом вставки', ' ':32, schetchik[3], ' ':17, skorost[3]:2:2);
writeln('простым методом попарного сравнения',
' ':12, schetchik[4], ' ':17, skorost[4]:2:2);
readln;
end.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.