You are on page 1of 5

ГБПОУ МО СЕРПУХОВСКИЙ КОЛЛЕДЖ

Лабораторная работа №5
«Программирование алгоритмов сортировки»
по дисциплине «Теория алгоритмов»
Цель: Приобрести практические навыки реализаций сортировки
средствами языка.

Выполнила студентка:

Леу Вероника, 22-П гр.

Проверила:

Шульгина Диана Сергеевна

Серпухов
2018
«Программирование алгоритмов сортировки»
Цель: Приобрести практические навыки реализаций сортировки
средствами языка.

1. Реализовать сортировка шелла сортировки


2. Реализовать алгоритм быстрая сортировка
1. Задача 1
Реализовать алгоритм сортировка шелла
uses crt;
const nmax=100;
b:array[1..5] of byte = (9,5,3,2,1);
var a:array[0..nmax] of integer;
n,i,j,k,gap,temp:integer;
w:char;
begin
clrscr;
randomize;
repeat
write('Размер массива от 5 до ',nmax,' n=');
readln(n);
until (n>4)and(n<=nmax);
writeln('Исходный массив:');
for i:=1 to n do
begin
a[i]:=random(nmax);
write(a[i]:4)
end;
writeln;
for k:=1 to 5 do
begin
gap:=b[k];
for i:=gap to n do
begin
temp:=a[i];
j:=i-gap;
while (temp<a[j]) and (j>=gap) do
begin
a[j+gap]:=a[j];
j:=j-gap;
end;
a[j+gap]:=temp;
end;
end;
writeln('Отсортированный массив:');
for i:=1 to n do
write(a[i]:4);
readln
end.
Рис 1.1

1.2 результат программы

Рис 1.2
2. Задача 2
Реализовать алгоритм быстрая сортировка
Листинг пргоргаммы
uses crt;
const n=200;
var x:array[1..n] of integer;
i:integer;
procedure sort(l,r:integer); {lлевый конец масива,r-правый конец}
var
i,j,x1,y1,m: integer;
begin
i:=l;
j:=r;
m:=round ((l+r)/2);{средний элемент}
x1:=x[m];
repeat
while x[i]<x1 do inc(i);{пока левый больше среднего, подвигоем левый край вправо }
while x[j]>x1 do dec(j);{пока правый меньше среднего, подвигаем левый вправо}
if i<=j then {если левый и правый срослись}
begin
y1:=x[i];
x[i]:=x[j];{меняем левый и правый}
x[j]:=y1;
inc(i); {левый вправо}
dec(j); {правый влево}
end;
until i>j;{конец одной перестановки}
if l<j then sort(l,j);{рекурсивно сортируем}
if i<r then sort(i,r);{или левую или правую части}
end;

begin
clrscr;
randomize;
writeln('Исходный массив:');
for i:=1 to n do
begin
x[i]:=random(1000);
write(x[i]:4);
end;
writeln;
sort(1,n);
writeln('Массив после сортировки: ');
for i:=1 to n do
write(x[i]:4);
end.
Рис 2.1
2.2 Результат работы программы

Рис 2.2