2.3 Быстрая сортировка
На рисунке 2.7 показан вывод программы.
Рисунок 2.7 - Значения выводимой программы
В таблице 2.5 приведены значения размера массивов, количество сравнений для каждой длины (compares) и количество перестановок (swaps).
Таблица 2.5 – Таблица значений количества сравнений и перестановок
Размер массива, n |
Количество сравнений |
Количество перестановок |
1 |
2 |
1 |
2 |
3 |
1 |
3 |
6 |
2 |
4 |
7 |
4 |
5 |
12 |
6 |
10 |
24 |
13 |
15 |
52 |
20 |
20 |
69 |
26 |
25 |
96 |
38 |
30 |
121 |
48 |
50 |
241 |
85 |
75 |
426 |
134 |
100 |
617 |
194 |
250 |
1861 |
553 |
500 |
4047 |
1248 |
На рисунке 2.8 показана зависимость O(n)=n, O(n)=n*log2(n), O(n)=n2, O(n)=n3, количество сравнений и количество перестановок.
Рисунок 2.8 – Зависимость для «Быстрой сортировки»
В таблице 2.6 показаны длина массивов и время выполнения перестановок и сравнений.
Таблица 2.6 – Таблица значений времени
Размер массива, n |
Время |
1 |
0 |
2 |
0 |
3 |
0,000001 |
4 |
0 |
5 |
0,000001 |
10 |
0 |
15 |
0,000001 |
20 |
0,000001 |
25 |
0,000002 |
30 |
0,000002 |
Продолжение таблицы 2.6 |
|
Размер массива, n |
Время |
50 |
0,000004 |
75 |
0,000006 |
100 |
0,000008 |
250 |
0,000016 |
500 |
0,000031 |
На рисунке 2.9 показан график зависимости времени от длины массива.
Рисунок 2.9 – График зависимости времени от длины массива
Из данных графиков можно сделать вывод, что линии количества перестановок и сравнений лежит между линией О(n) = n*log2(n). А лучшее время для быстрой сортировки = n*log2(n), а худшее = О (n2). Из этого следует, что наша программа попадает в лучшее время.
2.4 Пирамидальная сортировка
На рисунке 2.10 показан вывод программы.
Рисунок 2.10 - Значения выводимой программы
В таблице 2.7 приведены значения размера массивов, количество сравнений для каждой длины (compares) и количество перестановок (swaps).
Таблица 2.7 – Таблица значений количества сравнений и перестановок
Размер массива, n |
Количество сравнений |
Количество перестановок |
1 |
0 |
0 |
2 |
3 |
1 |
3 |
6 |
3 |
Продолжение таблицы 2.7 |
||
Размер массива, n |
Количество сравнений |
Количество перестановок |
4 |
10 |
7 |
5 |
12 |
6 |
10 |
55 |
35 |
15 |
98 |
56 |
20 |
150 |
88 |
25 |
191 |
110 |
30 |
262 |
150 |
50 |
510 |
294 |
75 |
842 |
471 |
100 |
1230 |
682 |
250 |
3679 |
1996 |
500 |
8417 |
4530 |
На рисунке 2.11 показана зависимость O(n)=n, O(n)=n*log2(n), O(n)=n2, O(n)=n3, количество сравнений и количество перестановок.
Рисунок 2.11 – Зависимость для «Пирамидальной сортировки»
В таблице 2.8 показаны длина массивов и время выполнения перестановок и сравнений.
Таблица 2.8 – Таблица значений времени
Размер массива, n |
Время |
1 |
0,000001 |
2 |
0 |
3 |
0 |
4 |
0 |
5 |
0 |
10 |
0,000001 |
15 |
0,000001 |
20 |
0,000002 |
25 |
0,000002 |
30 |
0,000004 |
50 |
0,000006 |
75 |
0,000006 |
100 |
0,000007 |
250 |
0,000022 |
500 |
0,000054 |
На рисунке 2.12 показан график зависимости времени от длины массива.
Рисунок 2.12 – График зависимости времени от длины массива
Из данных графиков можно сделать вывод, что линии количества перестановок и сравнений лежит между линией О(n) = n*log2(n). А лучшее время для пирамидальной сортировки = n*log2(n), а худшее = О (n2). Из этого следует, что наша программа попадает в лучшее время.