Материал: GrozI_Course_Work

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

20

Для кожного алгоритму , для кожної розмірності даних було проведено по 10 сортувань і взято середній час. Час замірявся за допомогою функції

high_resolution_clock з бібліотеки chrono.

Для запуску програмної реалізації тестування необхідно зробити наступне: 1. Після відкриття проекту , відкрити файл main.cpp

(main.cpp виглядає наступним чином)

2.Ввести ім’я алгоритму сортування ,яке буде відображатися при виконанні програми в змінній name.

2.Ввести ім’я функції , яка викликає потрібний алгоритм сортування варгуменах функції tester. (ім’я всіх функції можна подивитись в файлі – sort_algorithms.h)

2.Скомпілювати та запустити програму.

3.Очікуваний результат виконання програми

21

(Очікуваний результат виконання програми)

22

Тестування

Після тестування всіх алгоритмів було виявлено декілька залежностей деяких тестових даних та алгоритмів повя’язаних з принципами роботи цих алгоритмів. Спершу розглянемо графіки всіх тестів:

1.1. Довільні дані ,I-група

 

 

 

Random data

(I-group)

 

 

0.35

 

 

 

 

 

0.3

 

 

 

 

 

0.25

 

 

 

 

(seconds)

0.2

 

 

 

 

0.15

 

 

 

 

Time

0.1

 

 

 

 

 

 

 

 

 

 

0.05

 

 

 

 

 

0

 

 

 

 

 

10

100

1000

10000

100000

N-elements (array size)

Selection sort Insertion sort Shaker sort Counting sort

Time (seconds)

 

 

 

 

Random data

(I-group)

 

 

 

0.35000000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.30000000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.25000000

 

 

 

 

 

 

 

 

 

 

 

Selection sort

 

 

 

 

 

 

 

 

 

 

 

0.20000000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Insertion sort

 

 

 

 

 

 

 

 

 

 

 

 

0.15000000

 

 

 

 

 

 

 

 

 

 

 

Shaker sort

 

 

 

 

 

 

 

 

 

 

 

0.10000000

 

 

 

 

 

 

 

 

 

 

 

Counting sort

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.05000000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.00000000

 

 

 

 

 

 

 

 

 

 

 

 

10

100

1000

10000

100000

 

N-elements (array size)

23 Можемо побачити, що insertion sort найшвидший з представлених алгоритмів, (не враховуючи counting sort) для довільних даних. Selection, Insertion, Shaker sorts - алгоритми з квадратичною складнітю. Відповідно, особливих результатів ми не побачимо. Із зростанням кількості даних швидкість квадатично зменшується.

1.2. Довільні дані ,II-група

 

 

 

 

 

 

Random data

(II-group)

 

0.45

 

 

 

 

 

0.4

 

 

 

 

 

0.35

 

 

 

 

 

0.3

 

 

 

 

 

0.25

 

 

 

 

 

0.2

 

 

 

 

 

0.15

 

 

 

 

 

0.1

 

 

 

 

 

0.05

 

 

 

 

 

0

 

 

 

 

 

10

100

1000

10000

100000

1000000

24

Quick sort

Counting sort

Merge sort

Heap sort

Random data (II-group)

0.45000000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.40000000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.35000000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.30000000

 

 

 

 

 

 

 

 

 

 

 

 

Quick sort

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.25000000

 

 

 

 

 

 

 

 

 

 

 

 

Counting sort

 

 

 

 

 

 

 

 

 

 

 

 

Merge sort

 

 

 

 

 

 

 

 

 

 

 

 

 

0.20000000

 

 

 

 

 

 

 

 

 

 

 

 

Heap sort

 

 

 

 

 

 

 

 

 

 

 

 

0.15000000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.10000000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.05000000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.00000000

 

 

 

 

 

 

 

 

 

 

 

 

 

10

100

1000

10000

100000

1000000