sort_mass_ukr
Кира Стадниченко
Created on March 6, 2023
More creations to inspire you
LETTERING PRESENTATION
Presentation
ARTICLES
Presentation
PROMOTING ACADEMIC INTEGRITY
Presentation
HISTORY OF THE CIRCUS
Presentation
AGRICULTURE DATA
Presentation
LAS ESPECIES ANIMALES MÁS AMENAZADAS
Presentation
WATER PRESERVATION
Presentation
Transcript
Інформатика - 9
Алгоритми упорядкування елементів масиву
Алгоритми сортування даних
Алгоритм сортування
алгоритм для упорядкування элементів списку за одним з полів, яке є критерієм порядку та зветься ключом сортування.
- Знаходить у списку найменше значення
- Міняє його місцями із першим значенням у списку
- Починаючи з наступної позиції, повторює кроки 1-2, доки список не завершиться
Сортування вибором (Selection sort)
- може бути стійким та нестійким (однакові з точки зору параметра сортування елементи можуть змінювати своє розміщення)
- не є ефективним при сортуванні великих масивів
- Порівнюються перші два елементи списку.
- Якщо перший елемент більший (для сортування за зростанням), вони переставляються місцями, інакше залишаються як є.
- З наступною парою елементів процес повторюється.
- Дії тривають до останньої пари елементів списку.
- По досягненні кінця списку процес повторюється, поки список не буде відсортовано.
Сортування простим обміном / бульбашкове сортування (Bubble sort)
- ефективний для невеликих масивів даних
- вважається навчальним та практично не застосовується поза навчальною літературою
- лежить в основі кількох досконаліших алгоритмів: шейкерне сортування, пірамідальне сортування, швидке сортування
щоб «усунути» елементи з невеликими значеннями в кінці масиву, які уповільнюють роботу алгоритму, при «розчісуванні» спочатку береться досить велика відстань між значеннями, що порівнюються, а потім вона звужується аж до мінімального
шейкерне сортування (сортування змішуванням)
при тому ж попарному порівнянні сусідніх елементів відрізняється від бульбашкової двоспрямованістю: сортування відбувається в обох напрямках, змінюючи напрямок при кожному проході
сортування гребінцем
Удосконалення сортування бульбашкою
- елементи вхідного списку проглядаються по одному зліва направо
- кожний новий елемент, що надійшов розміщується у відповідне місце серед раніше впорядкованих елементів
Сортування включенням / сортування вставлянням (Insertion sort)
- є "стійким " (однакові з точки зору параметра сортування елементи не змінюють своє розташування)
- не відноситься до ефективних алгоритмів
- більш ефективний на невеликих масивах або масивах, частково відсортованих
- спочатку порівнюються і сортуються між собою значення, що стоять один від одного на деякій відстані d
- після процедура повторюється для деяких менших значень d
- сортування завершується упорядкуванням елементів при d = 1
Сортування Шелла (Shell sort)
- удосконалений варіант сортування включенням з попередніми «грубими» проходами
- ефективність методу Дональда Шелла в певних випадках забезпечується тим, що елементи «швидше» стають на свої місця
- алгоритм не є стійким (стабільним)
- задача розбивається на кілька підзадач меншого розміру
- підзадчі вирішуються за допомогою рекурсивного виклику або безпосередньо, якщо їх розмір досить малий
Сортування злиттям (Merge sort)
- рекурсивний алгоритм, в основі якого лежить злиття двох упорядкованих ділянок масиву в одну впорядковану ділянку іншого масиву
- упорядковує списки або інші структури даних, доступ до елементів яких можна отримувати лише послідовно
- відноситься до ефективних алгоритмів
- з масиву вибирається один елемент, зазвичай званий опорним
- інші елементи в масиві перерозподіляються так, щоб елементи, менші за опорний, опинилися до нього, а більші або рівні - після
- рекурсивно застосовуються кроки 1-2 до підмасивів праворуч і ліворуч від опорного значення.
Швидке сортування, сортування Гоара (Quicksort)
- часто називається qsort за іменем у стандартній бібліотеці мови С
- розроблене англійським інформатиком Чарльзом Гоаром в 1960 році
- один з найшвидших відомих універсальних алгоритмів сортування масивів, не є стійким
"куча"
- елементи масиву шикуються у вигляді бінарного сортувального дерева (купи, heap), де найбільший елемент є вершиною дерева
- цей елемент вилучається з купи і розміщується в кінці списку
- купа перебудовується і новий найбільший елемент розміщується перед останнім елементом у спискукроки 2-3 повторюються до впорядкування масиву
Пірамідальне сортування, сортування купою (Heap-sort)
- запропонований Дж. Вільямсом у 1964 році
- може розглядатися як удосконалене сортування бульбашкою, в якій елемент спливає (min-heap) або тоне (max-heap) багатьма шляхами
- дає виграш на великих масивах
Розмір масиву (кількість чисел)
Час сортування, секунд
Час сортування масивів цілочисельних значень, що не перевищують розміри масиву
Оцінювання алгоритмів сортування
- швидкість виконання (обчислювальна складність)
- ефективність використання пам'яті (потреба додаткової пам'яті)
- стабільність / стійкість (незмінюваність взаємного розташування елементів з однаковими ключами)
Джерела інформації та корисні посилання
- Алгоритм сортування (Вікіпедія, стаття)https://uk.wikipedia.org/wiki/Алгоритм_сортування
- Sorting strategies (плейлист YouTube): алгоритми сортування в народних танцяхhttps://www.youtube.com/watch?v=Xw2D9aJRBY4&list=PLcX11VWS1PdA4dSPip8-1JfKxFa32X53y
- Стабільне сортування (Вікіпедія, стаття)https://uk.wikipedia.org/wiki/Стабільне_сортування
- П’ять алгоритмів сортування на Python, які вам треба знати ("Телетайп")https://teletype.in/@cursor.education/6aIKSINQ7
- Сортування (Чернігівська обласна інтернет-школа "Юний програміст")http://choippo.cn.sch.in.ua/navchaljni_temi/sortuvannya/
- Сортировки в гифках: 8 самых популярных алгоритмов (Proglib.Academy)https://proglib.io/p/sort-gif/
- Sorting Algorithms Animations (Toptal)https://www.toptal.com/developers/sorting-algorithms