You are on page 1of 10

Міністерство освіти і науки України

Вінницький національний технічний університет


Факультет інтелектуальних інформаційних технологій та автоматизації
Кафедра Комп’ютерних наук

Звіт
З лабораторної роботи № 2
з дисципліни “Теорія алгоритмів”

Виконав ст. гр. 1КН-23б: Шпірук Валерія

Перевірив: Арсенюк І. Р.

Вінниця 2024
Тема: програмування, дослідження алгоритму внутрішнього сортування
шляхом вставок.
Мета: детально проаналізувати та дослідити алгоритм сортування шляхом
вставок.
Хід роботи
Теоретичні відомості
1. Ідея алгоритму сортування методом вставок.
Алгоритм сортування методом вставок (Insertion Sort) є одним з простих
алгоритмів сортування, який використовує принцип послідовного вставлення
елементів у вже відсортовану частину масиву чи списку. Цей метод належить
до категорії "порівняльних" сортувань, оскільки він порівнює елементи для
визначення їхнього правильного порядку.
Принцип роботи:
Початок. Алгоритм розпочинає роботу з першого елемента масиву,
вважаючи його відсортованим.
Вставка елементів. Далі він по черзі бере кожен наступний елемент і
вставляє його на відповідне місце в відсортованій частині масиву. Це
відбувається через порівняння і зрушення елементів.
Повторення. Процес повторюється до тих пір, поки всі елементи не будуть
впорядковані.
Основна перевага алгоритму сортування методом вставок полягає в його
простоті реалізації та інтуїтивному розумінні. Він ефективний для невеликих
масивів або списків, а також може бути корисним для часткового сортування,
де деякі елементи вже впорядковані.
2. Власний приклад роботи алгоритму сортування методом вставок
на масиві з 10 чисел.
За приклад візьмемо масив [5, 3, 7, 2, 8, 1, 9, 4, 10, 6] і крок за кроком
розпишемо алгоритм сортування
Крок 1: Перший елемент 5 вважається впорядкованим (вважаємо, що
масив з одного елемента вже впорядкований).
Крок 2: Порівнюємо 3 з 5 і вставляємо його перед 5. Отримуємо: [3, 5, 7, 2,
8, 1, 9, 4, 10, 6].
Крок 3 : 7 вже більше 5, тому залишається на своєму місці. Отримуємо: [3,
5, 7, 2, 8, 1, 9, 4, 10, 6].
Крок 4: 2 порівнюється і вставляється перед 3. Отримуємо: [2, 3, 5, 7, 8, 1,
9, 4, 10, 6].
Крок 5: 8 вставляється перед 9. Отримуємо: [2, 3, 5, 7, 8, 1, 9, 4, 10, 6].
Крок 6: 1 порівнюється і вставляється перед 2. Отримуємо: [1, 2, 3, 5, 7, 8,
9, 4, 10, 6].
Крок 7: 9 залишається на своєму місці, бо вже більше 8. Отримуємо: [1, 2,
3, 5, 7, 8, 9, 4, 10, 6].
Крок 8: 4 вставляється перед 5. Отримуємо: [1, 2, 3, 4, 5, 7, 8, 9, 10, 6].
Крок 9: 10 залишається на своєму місці. Отримуємо: [1, 2, 3, 4, 5, 7, 8, 9, 10,
6].
Крок 10: 6 вставляється перед 7. Отримуємо остаточний впорядкований
масив: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].
Даний алгоритм сортування можна реалізувати за допомогою мови
програмування Python:

Рисунок 1 – код програми


Рисунок 2 – результат виконання програми

Цей масив буде відсортований, як зазначалося вище, за 10 кроків:

Рисунок 3 – умовний алгоритм сортування


3. Алгоритм сортування методом вставок у графічному вигляді.

Рисунок 4 – графічний вигляд сортування методом вставок


4. Теоретична оцінка складності алгоритму для трьох випадків.
4.1. Найкращий випадок:
В найкращому випадку, коли вхідний масив вже впорядкований, алгоритм
має лінійну часову складність O(n). Це тому, що кожен елемент порівнюється
із своїм попереднім лише один раз, і вставляється на своє місце без зайвих
операцій.
4.2. Найгірший випадок:
У найгіршому випадку, коли вхідний масив відсортований у зворотньому
порядку, алгоритм має квадратичну часову складність O(n2). Кожен елемент
порівнюється з усіма елементами впорядкованої частини масиву, і
вставляється на своє місце, що призводить до квадратичного числа операцій.
4.3. Середній випадок:
Середня теоретична складність сортування вставками також є
квадратичною O(n2), оскільки в середньому випадку кожен елемент також
має пройти через половину вже впорядкованого масиву.
Узагальнюючи, сортування методом вставок має ефективність O(n) в
найкращому випадку, але може бути неефективним для великих масивів
через квадратичну часову складність в найгіршому та середньому випадках.

5. Сирець алгоритму сортування методом вставок.

Рисунок 5 –сирець (псевдокод) алгоритму сортування методом вставок

6. Практична оцінка складності алгоритму в трьох випадках для


масивів різного розміру. Навести таблиці та відповідні графіки часу
виконання програми для трьох випадків. Кількість значень часу
має бути не менше семи.

Код програми, який наведений нижче, в одній програмі генерує


найкращий, найгірший та середній випадок. Також після введення
числа елементів він одразу вираховує час сортування та потім виводить
його у терміналі. Таким чином нам дуже зручно обраховувати одразу
всі випадки для певної кількості елементів n.
Рисунок 6 – код програми
6.1 Таблиця для найкращого випадку:
n t, (c)
1000 0.0
10000 0.001001
25000 0.001998
50000 0.003997
100000 0.007999

6.2 Таблиця для найгіршого випадку


n t, (c)
1000 0.031998
10000 3.444035
25000 21.842731
50000 88.834974
100000 579.226833

6.3 Таблиця для середнього випадку


n t, (c)
1000 0.020998
10000 1.829019
25000 11.606614
50000 51.984677
100000 201.952878

6.4 Лінійна діаграма ( графік ) часу виконання програми для трьох


випадків:
Рисунок 7 – графік часу виконання сортування

7. Порівняльний аналіз теоретично та практично отриманих графіків


залежностей часів виконання програми від розмірів входу.
Порівнюючи теоретичну та практичну складність, можна відзначити, що в
теорії середній та найгірший випадок алгоритму сортування методом вставок
мають однакову оцінку складності - O(n2). Проте, аналізуючи практичні
результати, стає видно, що в реальних умовах найгірший випадок
виконується значно довше, ніж середній випадок.
8. Переваги та недоліки алгоритму сортування методом вставок з
Вашими міркуваннями.
Переваги алгоритму сортування методом вставок:
1) Простота реалізації: Алгоритм сортування методом вставок є досить
простим для реалізації. Він не вимагає великої кількості складних
операцій чи додаткового обладнання.
2) Ефективність на невеликих масивах: Для невеликих масивів або вже
впорядкованих масивів алгоритм може працювати досить ефективно.
3) Не вимагає додаткового простору пам'яті: Алгоритм сортування
методом вставок сортує масив "на місці" і, таким чином, не вимагає
додаткового простору пам'яті для роботи.
Недоліки алгоритму сортування методом вставок:
1) Низька ефективність на великих масивах: Для великих масивів
алгоритм має квадратичну часову складність, що може призводити до
його повільної роботи порівняно з швидшими алгоритмами сортування.
2) Залежність від початкового стану: Ефективність алгоритму суттєво
залежить від початкового стану масиву. Для вже впорядкованих або
частково впорядкованих масивів він може працювати досить ефективно,
але для випадкових масивів його продуктивність може погіршитися.
Хоча алгоритм сортування методом вставок має свої обмеження, він може
бути корисним в конкретних сценаріях, де важлива простота реалізації чи
адаптивність до частково впорядкованих даних.
Висновок: працюючи над лабораторною роботою я детально
проаналізувала та дослідила алгоритм сортування шляхом вставок.
Визначила практичну оцінку складності алгоритму в усіх трьох випадках,
побачила різницю між теоретично та практично отриманими графіками та
виявила переваги та недоліки алгоритму сортування методом вставок на свій
розсуд.

You might also like