- •Алгоритм «Сортировка выбором» (Selection Sort)
- •Цель работы.
- •Блок-схема программы для сортировки выбором.
- •Текст программы 1 (cортировка по выбору).
- •Листинг 1.
- •Текст программы 2 (s(1000)).
- •Листинг 2.
- •Текст программы 3 (s(10000)).
- •Листинг 3.
- •Текст программы 4 (s(100000)).
- •Листинг 4.
- •Таблицу времени выполнения и числа перестановок от размерности вектора, таблицу с коэффициентами KN, Kt, Km
- •Вывод.
- •3.2 Алгоритм «Сортировка пузырьком» (Bubble Sort)
- •Текст программы 1 (cортировка пузырьком).
2-3 |
10 |
96,348196 |
10,0009 |
1-3 |
100 |
1217,297064 |
100,0991 |
Вывод.
Были реализованы программы сортировки выбором для n-вектора исходных данных в программе Matlab. Время сортировки и число перестановок увеличивалось с увеличением размерности вектора n.
6
3.2 Алгоритм «Сортировка пузырьком» (Bubble Sort)
Цель работы.
Изучение и программирование стандартного алгоритма сортировки пузырьком.
Блок-схема программы для сортировки выбором.
Текст программы 1 (cортировка пузырьком).
clc;
clear all; N=7;
M=0;
s=[10 8 3 28 11 4 1]; tic;
for i=N:(-1):1% N принимает значения от максимального номера элемента (7) до 1
for j=1:i-1 % пробег по всему массиву кроме последнего элемента
if (s(j+1)<s(j))% если j+1 элемент массива меньше j
P=s(j);
s(j)=s(j+1);
s(j+1)=P;
M=M+1;% количество перестановок
end
end
end toc;
disp(s);
disp(M);
Листинг 1.
Elapsed time is 0.008697 seconds.
1 |
3 |
4 |
8 |
10 |
11 |
28 |
14 |
|
|
|
|
|
|
Текст программы 2 (s(1000)).
clc;
clear all; N=1000; M=0;
s=fix(50*rand ([1 1000])); tic;
for i=N:(-1):1% N принимает значения от максимального номера элемента (7) до 1
for j=1:i-1 % пробег по всему массиву кроме последнего элемента
if (s(j+1)<s(j))% если j+1 элемент массива меньше j
P=s(j);
s(j)=s(j+1);
s(j+1)=P;
M=M+1;% количество перестановок
end
end
end toc;
disp(M);
Листинг 2.
Elapsed time is 0.020315 seconds. 241678
Текст программы 3 (s(10000)).
clc;
clear all;
8
N=10000;
M=0;
s=fix(50*rand ([1 10000])); tic;
for i=N:(-1):1% N принимает значения от максимального номера элемента (7) до 1
for j=1:i-1 % пробег по всему массиву кроме последнего элемента
if (s(j+1)<s(j))% если j+1 элемент массива меньше j
P=s(j);
s(j)=s(j+1);
s(j+1)=P;
M=M+1;% количество перестановок
end
end
end toc;
disp(M);
Листинг 3.
Elapsed time is 0.349434 seconds. 24756111
Текст программы 4 (s(100000)).
clc;
clear all; N=100000; M=0;
s=fix(50*rand ([1 100000])); tic;
for i=N:(-1):1% N принимает значения от максимального номера элемента (7) до 1
for j=1:i-1 % пробег по всему массиву кроме последнего элемента
if (s(j+1)<s(j))% если j+1 элемент массива меньше j
P=s(j);
s(j)=s(j+1);
s(j+1)=P;
M=M+1;% количество перестановок
end
end
end
9
toc;
disp(M);
Листинг 4.
Elapsed time is 36.395857 seconds. 2.4586e+09
Таблицу времени выполнения и числа перестановок от размерности вектора, таблицу с коэффициентами KN, Kt, Km
i |
N |
t, сек |
m |
1 |
1000 |
0,020315 |
241678 |
2 |
10000 |
0,349434 |
24756111 |
3 |
100000 |
36,395857 |
2,46E+09 |
i-j |
KN |
Kt |
Km |
1-2 |
10 |
17,200788 |
102,4343 |
2-3 |
10 |
104,156599 |
99,31285 |
1-3 |
100 |
1791,575535 |
10173,04 |
Вывод.
Были реализованы программы сортировки выбором для n-вектора исходных данных в программе Matlab. Время сортировки и число перестановок увеличивалось с увеличением размерности вектора n.
10