Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

AiSD_metoda

.pdf
Скачиваний:
18
Добавлен:
07.06.2015
Размер:
694 Кб
Скачать

r1=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