Скачиваний:
22
Добавлен:
27.01.2021
Размер:
27.08 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра РТЭ

отчёт

по лабораторной работе

по дисциплине «Информационные технологии»

Тема: «Алгоритмы и программы решения задач комбинаторики»

Студентка гр.9283

Зикратова А. А.

Преподаватель

Кочунов К. В.

Санкт-Петербург

2020

Цель работы:

изучение и программирование стандартных алгоритмов сортировки выбором и сортировки пузырьком.

часть:

1-4. Алгоритм сортировки:

N=7; % кол-во элементов

M=0;

S=[10 8 3 28 11 4 1]; % массив

tic

for I=1:(N-1) % начало цикла, "I" изменяется от ... до ...

for J=(I+1):N

MIN=I; % вводится новая переменная, поскольку "I" не должна меняться в теле цикла

while S(J)<S(MIN) % условие

MIN=J; % "J" не может меняться в теле цикла

P=S(I); % "P" принимает значение ячейки S(I)

S(I)=S(MIN); % ячейка S(I) принимает значение ячейки S(MIN), после чего ячейка S(MIN) становится пустой

S(MIN)=P; % ячейка S(MIN) принимает значение переменной "P"

M=M+1; % подсчёт кол-ва перестановок

end

end

end

toc

disp(S) % вывод упорядоченного массива

disp(M)

5-6. Результаты работы программы:

Elapsed time is 0.005098 seconds.

1 3 4 8 10 11 28

14

7-11. Алгоритм сортировки вектора N-ой размерности:

N=100; (N=1000; 10000; 100000)

M=0;

S=fix(50*rand ([1 100])); (S=fix(50*rand ([1 (1000;10000; 100000)]))

tic

for I=1:(N-1)

for J=(I+1):N

MIN=I;

while S(J)<S(MIN)

MIN=J;

P=S(I);

S(I)=S(MIN);

S(MIN)=P;

M=M+1;

end

end

end

toc

disp(M)

 

N

t(с)

M

1

1000

0,014807

24059

2

10000

0,746883

244471

3

100000

73,593171

2447700

(i;j)

KN

Kt

KM

(1;2)

10

50,4412102

10,1613118

(2;3)

10

98,5337342

10,0122305

(1;3)

100

4970,1608

101,737396



часть:

1-5. Алгоритм сортировки пузырьком:

N=7; % кол-во элементов

M=0;

S=[10 8 3 28 11 4 1];

tic

for I=N:(-1):1 % "I" изменяется от ... до ... с шагом ...

for J=1:(I-1) % "J" изменяется от ... до ...

if S(J+1)<S(J) % условие

P=S(J); % "P" принимает значение ячейки S(J), после чего ячейка становится пустой

S(J)=S(J+1); % ячейки меняются местами

S(J+1)=P; % в ячейку S(J+1) помещается значение "P"

M=M+1; % посчёт кол-ва перестановок

end

end

end

toc

disp(M) % вывод

disp(S)

6. Результаты работы программы:

Elapsed time is 0.006342 seconds.

14

1 3 4 8 10 11 28

7. Модифицированная программа:

N=1000; (N=10000; 100000)

M=0;

S=fix(50*rand ([1 1000])); ((s=fix(50*rand ([1 1000; 10000; 100000]))

tic

for I=N:(-1):1

for J=1:(I-1)

if S(J+1)<S(J)

P=S(J);

S(J)=S(J+1);

S(J+1)=P;

M=M+1;

end

end

end

toc

disp(M)

8-11. Таблицы (размерностью вектора, временем выполнения сортировки и числом перестановок) :

Xi

N

t

M

1

1000

0,007983

244349

2

10000

0,411717

24592520

3

100000

44,092143

2441700000

X(I;j)

KN

Kt

KM

(1;2)

10

51,5742202

100,645061

(2;3)

10

107,093326

99,28628705

(1;3)

100

5523,25479

9992,674412

Вывод: В ходе лабораторной работы были изучены алгоритмы сортировки выбором и пузырьком. Для 1-го алгоритма: Kt ~ KN, KM ~ KN –линейные зависимости. Для 2-го алгоритма: исходя из таблиц можно сказать, что зависимость KM ~ KN – квадратичная, а зависимость Kt ~ KN – линейная, возможно. Если сравнить два алгоритма, то наиболее эффективный из них-сортировка выбором (меньшее время работы программы).

P. S.

Программы запускались с 2-х разных компьютеров (1 часть сделана с домашнего компьютера, 2 часть сделана в институте) → есть некоторое несоответствие между таблицами из 2-х частей и выводом (по таблицам получается, что эффективнее метод пузырьком).