AiSD_metoda
.pdfr1=float(t.ti_hund)/100+t.ti_sec+t.ti_min*60+t.ti_hour*3600; |
|
||||||||
if (ns==1) {sort_obmen(a[i-1]);} else {hoor(a[i-1],1,amax);} |
|
||||||||
gettime(&t); |
|
|
|
|
|
|
|
|
|
r2=float(t.ti_hund)/100+t.ti_sec+t.ti_min*60+t.ti_hour*3600; |
|
||||||||
time[ns-1][i-1]=r2-r1; |
|
|
|
|
|
|
|||
printf("После сортировки\n");fprintf(f,"После сортировки\n"); |
|
||||||||
for (k=0;k<10;k++) |
|
|
|
|
|
|
|||
{printf("%6i",a[i-1][k]);fprintf(f,"%6i",a[i-1][k]);} |
|
|
|||||||
printf("\n");fprintf(f,"\n"); |
|
|
|
|
|
||||
printf("Время: %0.2f\n",time[ns-1][i-1]); |
|
|
|
||||||
fprintf(f,"Время: %0.2f\n",time[ns-1][i-1]); |
|
|
|
||||||
} // i |
|
|
|
|
|
|
|
|
|
printf("\n");fprintf(f,"\n"); |
|
|
|
|
|
||||
} // ns |
|
|
|
|
|
|
|
|
|
printf("Подведение итогов (время в секундах)\n"); |
|
|
|
||||||
printf("|---------------------------------------------- |
|
|
|
|
|
|\n"); |
|
|
|
printf("| Алгоритм | Идеальный | Случайный | Наихудший |\n"); |
|
||||||||
printf("|---------------------------------------------- |
|
|
|
|
|
|\n"); |
|
|
|
fprintf(f,"Подведение итогов (время в секундах)\n"); |
|
|
|
||||||
fprintf(f,"|---------------------------------------------- |
|
|
|
|
|
|\n"); |
|
|
|
fprintf(f,"| Алгоритм | Идеальный | Случайный | Наихудший |\n"); |
|
||||||||
fprintf(f,"|---------------------------------------------- |
|
|
|
|
|
|\n"); |
|
|
|
for (ns=1;ns<=2;ns++) |
|
|
|
|
|
|
|
||
{ |
|
|
|
|
|
|
|
|
|
if (ns==1) {printf("| Обмен |
");fprintf(f,"| Обмен ");} |
|
|
||||||
|
else {printf("| Хоор ");fprintf(f,"| Хоор |
");} |
|
|
|||||
for (i=1;i<=3;i++) {printf("|%11.3f",time[ns-1][i-1]); |
|
|
|
||||||
|
|
fprintf(f,"|%11.3f",time[ns-1][i-1]);} |
|
|
|
||||
printf("|\n");fprintf(f,"|\n"); |
|
|
|
|
|
|
|||
} // ns |
|
|
|
|
|
|
|
|
|
printf("|---------------------------------------------- |
|
|
|
|
|
|\n"); |
|
|
|
fprintf(f,"|---------------------------------------------- |
|
|
|
|
|
|\n"); |
|
|
|
fclose(f); |
|
|
|
|
|
|
|
|
|
} // main |
|
|
|
|
|
|
|
|
|
Сравнение двух методов сортировки в Турбо-C++ |
|
|
|||||||
Метод сортировки обменами |
|
|
|
|
|
||||
Идеальное расположение |
|
|
|
|
|
|
|||
До сортировки |
|
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
После сортировки |
|
|
|
|
|
|
|
||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Время: 1.64 |
|
|
|
|
|
|
|
|
|
Случайное расположение |
|
|
|
|
|
|
|||
До сортировки |
|
|
|
|
|
|
|
|
|
346 |
130 |
982 |
1090 |
1656 |
7117 |
7595 |
6415 |
2948 |
1126 |
41
После сортировки |
|
|
|
|
|
|
|
||
0 |
0 |
1 |
1 |
2 |
3 |
4 |
4 |
6 |
6 |
Время: 3.25 |
|
|
|
|
|
|
|
|
|
Обратное расположение |
|
|
|
|
|
|
|||
До сортировки |
|
|
|
|
|
|
|
|
|
10000 |
9999 |
9998 |
9997 |
9996 |
9995 |
9994 |
9993 |
9992 |
9991 |
После сортировки |
|
|
|
|
|
|
|
||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Время: 4.22 |
|
|
|
|
|
|
|
|
|
Метод быстрой сортировки |
|
|
|
|
|
|
|||
Идеальное расположение |
|
|
|
|
|
|
|||
До сортировки |
|
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
После сортировки |
|
|
|
|
|
|
|
||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Время: 0.00 |
|
|
|
|
|
|
|
|
|
Случайное расположение |
|
|
|
|
|
|
|||
До сортировки |
|
|
|
|
|
|
|
|
|
3369 |
2020 |
5703 |
2762 |
828 |
6252 |
8648 |
7041 |
3444 |
6604 |
После сортировки |
|
|
|
|
|
|
|
||
3 |
4 |
5 |
5 |
6 |
6 |
10 |
11 |
11 |
13 |
Время: 0.00 |
|
|
|
|
|
|
|
|
|
Обратное расположение |
|
|
|
|
|
|
|||
До сортировки |
|
|
|
|
|
|
|
|
|
10000 |
9999 |
9998 |
9997 |
9996 |
9995 |
9994 |
9993 |
9992 |
9991 |
После сортировки |
|
|
|
|
|
|
|
||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Время: 0.00 |
|
|
|
|
|
|
|
|
|
Подведение итогов (время в секундах) |
|
|
|
|
|||||
|---------------------------------------------- |
|
|
|
|
|
|
| |
|
|
| Алгоритм | Идеальный | Случайный | Наихудший | |
|
|
|||||||
|---------------------------------------------- |
|
|
|
|
|
|
| |
|
|
| Обмен |
| |
|
1.640| |
|
3.250| |
|
4.220| |
|
|
| Хоор |
| |
|
0.000| |
|
0.000| |
|
0.000| |
|
|
|---------------------------------------------- |
|
|
|
|
|
|
| |
|
|
Анализ полученных результатов
Как видно из результатов, быстрая сортировка Хоора практически не зависит от начального расположения элементов. Кроме того, время, которое требуется алгоритму Хоора, ничтожно мало по сравнению с пузырьковой сортировкой. Поэтому диаграммы (рис. 1 – 3) проиллюстрируют только сравнение эффективности обменной сортировки в зависимости от начального расположения элементов и выбранной среды программирования.
42
|
|
|
Время работы алгоритмов |
|
|||
|
|
|
|
|
|
|
Идеальный |
16,00 |
13,63 |
|
|
|
|
Случайный |
|
|
|
|
|
|
|||
14,00 |
|
|
|
|
|
||
|
|
|
|
|
|
Наихудший |
|
|
|
|
|
|
|
|
|
12,00 |
|
|
|
|
|
|
Средний |
10,00 |
8,56 |
8,33 |
|
|
|
|
|
8,00 |
|
|
|
|
|
|
|
6,00 |
|
|
|
|
|
3,254,22 |
|
4,00 |
2,81 |
|
|
1,812,15 |
1,74 |
3,04 |
|
2,00 |
|
|
1,27 |
1,64 |
|
||
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
0,00 |
|
|
|
|
|
|
|
|
Turbo-Pascal |
Borland-Delphil |
Turbo-C++ |
||||
Рисунок 1 – Время работы алгоритма сортировки обменами |
|||||||
|
Отклонение времени работы от среднего по состоянию данных |
|||||
120% |
|
|
|
|
|
Turbo-Pascal |
|
|
|
|
104% |
|
|
|
|
|
|
|
|
|
100% |
|
|
|
|
|
Borland-Delphil |
|
87% |
|
|
|
|
|
|
|
|
|
|
Turbo-C++ |
|
|
|
|
|
|
|
|
80% |
|
63% |
|
71% |
70% |
Среднее |
|
|
58% |
|
|
|
|
60% |
|
|
|
|
|
|
50% 46% |
|
|
|
|
|
|
|
|
|
|
|
|
|
40% |
33% |
|
|
|
34% |
|
|
|
|
25% |
|
|
|
20% |
|
|
|
|
|
|
|
4% |
|
|
|
|
|
0% |
|
|
|
|
|
|
|
Идеальный |
Случайный |
Наихудший |
|
||
Рисунок 2 – Отклонение времени работы алгоритма сортировки об- |
||||||
менами от среднего значения в зависимости от расположения данных |
||||||
|
|
Отклонение времени работы от среднего по среде |
|
||
70% |
66% |
64% |
|
|
Идеальный |
|
|
|
|
||
|
|
|
|
|
|
60% |
|
|
|
|
Случайный |
50% |
|
|
|
46% |
Наихудший |
|
44% |
|
Средний |
||
|
|
|
|
||
|
|
|
|
39% |
|
40% |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27% |
31% |
|
30% |
|
|
|
|
|
|
|
23% |
|
|
|
|
|
|
|
|
|
20% |
|
|
18% |
|
|
|
|
|
|
|
|
10% |
|
|
4% |
7% |
|
|
3% |
|
|
||
|
|
|
|
||
0% |
|
|
|
|
|
|
Turbo-Pascal |
Borland-Delphil |
Turbo-C++ |
|
|
Рисунок 3 – Отклонение времени работы алгоритма сортировки обменами от среднего значения в зависимости от выбранной среды
43
СПИСОК РЕКОМЕНДОВАННОЙ ЛИТЕРАТУРЫ
1Мельников, А.Ю. Алгоритмизация и программирование : Учебное пособие для студентов специальности «Интеллектуальные системы принятия решений» / А.Ю. Мельников. – Издание 2-е, с изменениями.
–Краматорск: ДГМА, 2010. – 96 с. – ISBN 978-966-379-437-2
2Немнюгин, С.А. Turbo Pascal. – СПб. : Питер, 2002. – 496 с. –
ISBN 5-8046-0137-7.
3Подбельский, В.В. Язык С++ : учебное пособие / В. В. Подбельский. – 5-е изд. – М. : Финансы и статистика, 2001. – 560 с. – ISBN 5- 279-02204-7.
4Практикум для виконання лабораторних робіт з дисципліни «Мови об’єктно-орієнтованого програмування» : Навчальний посібник / укл.: О. Ф. Тарасов, О. В. Алтухов. – Краматорськ : ДДМА, 2001. – 152 с. –
ISBN 5-7763-2108-5.
5Павловская, Т.А. С/С++. Программирование на языке высокого уровня / Т. А. Павловская. – СПб. : Питер, 2001. – 464с. – ISBN 5-318- 00001-0.
6Павловская, Т.А. С/С++. Структурное программирование : практикум / Т. А. Павловская, Ю. А. Щупак. – СПб. : Питер, 2002. – 240 с.
–ISBN 5-94723-447-5.
7Касаткин, А.И. Профессиональное программирование на языке Си: от Turbo C к Borland C++ : Справочное пособие / А. И. Касаткин, А. Н. Вальвачев ; под общ. ред. А. И. Касаткина. – Минск : Выш. шк., 1992. – 240 с. – ISBN 5-339-00807-X.
8Грызлов, В.И. Турбо-Паскаль 7.0. Учебный курс / В. И. Грызлов, Т. П. Грызлова. – 3-е изд., испр. и доп. - СПб. : Питер, 2005. – 416 с. –
ISBN: 5-469-00648-4.
9Немнюгин, С.А. Turbo Pascal: практикум. – СПб. : Питер,
2002. – 256 с. – ISBN 5-272-00068-4.
10Программирование на языке Паскаль: задачник / под ред. О. Ф.
Усковой. – СПб. : Питер, 2002. – 336 с. – ISBN 5-318-00553-5.
11Вирт, Н. Алгоритмы и структуры данных / Пер. с англ. – 2-е изд., испр. – СПб. : Невский Диалект, 2001. – 352 с. – ISBN 5-7940-0065-1.
12Климова, Л.М. PASCAL 7.0 Практическое программирование. Решение типовых задач / Л. М. Климова. – М. : КУДИЦ-ОБРАЗ, 2000. – 528 с. – ISBN 5-93378-033-2.
13Кравченко, В.І. Методичний посібник до лабораторних і самостійних робіт з дисципліни “Основи програмування та алгоритмічні мови”: Частина 1. (для студентів спеціальності 7.080402) / В. І. Кравченко, О. В. Веремій, В. В. Зоненко. – Краматорськ : ДДМА, 2005. – 104 с. – ISBN
14Седжвик, Р. Фундаментальные алгоритмы на С. Анализ. Структуры данных. Сортировка. Поиск. Алгоритмы на графах / Р. Седжвик; пер. с. англ. – СПб : ООО «ДиаСофтЮП», 2003. – 1136 с.
44
