Лабораторные работы по ИТ за 2 семестр (ФЭЛ) / 9283_Зикратова_ИТ_ЛР№3
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра РТЭ
отчёт
по лабораторной работе
по дисциплине «Информационные технологии»
Тема: «Алгоритмы и программы решения задач комбинаторики»
Студентка гр.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-х частей и выводом (по таблицам получается, что эффективнее метод пузырьком).