3. Спочатку трохи розважимось
1. Що таке масив?
2. Що таке ключ сортування?
3. Які характеристики алгоритму сортування слід брати
до уваги?
4. В чому полягає суть бульбашкового сортування?
5. Яку основну ідею покладено в основу алгоритму
прямого включення?
6. Опишіть принцип роботи алгоритму прямого вибору?
7. Вдосконаленням якого алгоритму є шейкерне
сортування?
8. Які види пошуку можна виконувати в масивах?
9. Що таке бінарний пошук?
10. В чому полягає ідея еврістичного пошуку?
11. Що таке рекурсія?
4. А тепер – до справи!
• Навіщо це все?
– Розглянути вдосконалені методи
сортування
– Побачити перспективи їх застосування в
реальному житті
– Отримати знання, необхідні для розробки
реального бізнес-ПЗ
• Що далі?
– Практичне заняття
• Дивись типові завдання з теми
5. Ще дещо
• Продовжуємо малювати ментальні
карти
– В зошиті
– В онлайні спільними зусиллями
• В кінці заняття я продемонструю
онлайнову карту
• І не забудьте про електронний
підручник!
• Використовуємо
6. Ще дещо
• Презентація і план заняття – у вільному
доступі на Google Docs
– https://docs.google.com/document/d/1HKk3xfo2O3eV1t
9iMVevtvSUjf_qR7O0HVydBSdKdyI/edit?hl=en
– https://docs.google.com/viewer?a=v&pid=explorer&chro
me=true&srcid=0B0PjUxvE_ZtANjFlNmYyN2QtZmVhN
C00OWEyLTk3YzMtN2JmYmI1OGQ4ZDgy&hl=en
7. Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
8. Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
9. Масиви
• впорядкований набір однотипних
елементів
– базовий тип
– кількість вимірів
– кількість елементів
– спосіб опису
10. Операції над масивами
• розбивка
• злиття
• перетворення
• сортування
– характеристики
• середня швидкість
• швидкість у граничних випадках
• природність поведінки
• перестановка елементів з однаковими
індексами?
• пошук
11. Ключ сортування
• Критерій для впорядкування елементів
– обчислюваний
• F(x)
– необчислюваний
• Згадаймо
про БД!
13. Метод прямого включення
• масив розбивається на дві частини
– відсортована
– невідсортована
• на кожному кроці беремо з
невідсортованої один елемент
– починаємо з i=2
– переміщуємо у
відсортовану
• не порушуємо порядку
• вкладені цикли
• ~ln(n)
14. Метод прямого вибору
• найменший елемент міняється місцями
з першим
– повторюємо, доки не дійдемо до кінця
16. Сортування злиттям
• є 2 масиви, відсортовані в порядку
зростання
• треба об'єднати їх, не порушивши
порядку
• порівнюємо перші, потім другі елементи
і т.д.
17. Критерії пошуку елементів
• пошук позиції
• пошук елемента, який задовольняє
певну умову
– min
– max
– медіана
– n-те найменше значення
17
21. Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
22. Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
23. Особливості вдосконалених
методів
• швидкість ~ln(n)
– спочатку швидко росте
– потім стабілізується
– Логарифм
• для великих масивів
– для малих - прості методи
• пряма вставка
• шейкерний
• простого вибору
• Основні вдосконалені методи сортування
– Шелла
– швидке сортування
– пірамідальне
24. Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
25. Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
26. Сортування Шелла
• вдосконалена проста вставка
– кожен елемент переміщується на половину
відсортованого масива
• переміщення на більші відстані
– змінна довжина кроку
• 4-2-1
• на останньому кроці масив вже впорядковано
• час виконання ~x1.2
– x2 для простої вставки
• приклад - в електронному підручнику
27. Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
28. Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
29. Швидке сортування
• вдосконалений бульбашковий
• перестановки далеко розташованих елементів
– приклад - масив, відсортований у зворотному
порядку
• n/2 кроків
• обирають деякий елемент m
– всі менші елементи - ліворуч від m
– всі більші елементи - праворуч m
30. Швидке сортування
• повторюють попередню процедуру для лівої і
правої частин масиву
• рекурсія
– медіана
• ймовірність =1/n
• центральний елемент
• приклад - в електронному підручнику
31. Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
32. Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
33. Пірамідальне сортування
• вдосконалення прямого вибору
– ітеративний пошук найменшого
• на перше місце
• повторення для 2..n, 3..n, ...
– n-1, n-2, n-3, ...
– (n2-n)/2
– розбиваємо масив на пари
• попарне порівняння
• n/2 порівнянь
– в кожній парі беремо найменші елементи і
порівнюємо
• n/4 порівнянь
34. Пірамідальне сортування
• за n порівнянь
– знайдемо найменший елемент
– побудуємо дерево елементів
• піраміда
• елементи пронумеровані від 1 до R
• x(i) <= x(i∙2)
• x(i) <= x(i∙2+1)
– забираємо верхній (найменший) елемент
• міняємо його на найменший з нижніх елементів
– після n повторень піраміда буде пустою
• приклад - в електронному підручнику
35. Пірамідальне сортування
• Піраміда = дерево
• Двійкові дерева
– Будемо розглядати пізніше
– Лежать в основі багатьох
алгоритмів
Чудовий приклад – Акінатор
інтернет-геній
Спробуємо?
36. Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
37. Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
38. Типові завдання з теми
• Розглянуті методи
– реалізація алгоритмів будь-якою мовою
• Практичне застосування
– Математика
• сортування матриць
– Лінгвістика
• сортування текстових файлів
– Економіка і планування
• Оптимізація
– задача про два верстати
39. Підводимо підсумки
• Для великих масивів є сенс
використовувати вдосконалені
алгоритми сортування
• Основними вдосконаленнями є
алгоритм Шелла, швидке і пірамідальне
сортування
• Розглянуті алгоритми можуть бути
застосовані в математиці, економіці,
системах штучного інтелекту…
• Ці методи варто вивчити з метою
подальшого застосування!
41. Мої запитання
• Для яких масивів є сенс
використовувати розглянуті методи?
• Вдосконаленням якого методу є
алгоритм Шелла?
• На основі якого алгоритму побудовано
метод швидкого сортування?
• Який метод засновано на ідеях
алгоритму прямого вибору?
42. Хочете знати більше?
• Електронний підручник
• Структуры данных и алгоритмы
http://black-zorro.com
• Kantor Ilia. Алгоритмы сортировки
http://algolist.manual.ru/sort/
• Алгоритм сортировки (Википедия)
• Категория:Алгоритмы сортировки (Википедия)
• Алгоритмы сортировки (Викиучебник)
• Как работают алгоритмы сортировки
http://habrahabr.ru/blogs/algorithm/104583/
43. Хочете cпробувати?
• Sorting Algorithm Animations
http://www.sorting-algorithms.com/
• Наглядные анимации всех основных
методов сортировки
44. Ментальна карта
• Альтернатива конспекту
• Цілісний візуальний образ
• Будуємо для кожної теми
• З використанням онлайнових сервісів
може будуватись спільно
Подивимось?
45. Домашнє завдання
1. Допрацювати ментальну карту
– Диктант на початку наступного заняття
2. Виконати будь-які два завдання з 15
запропонованих до цієї теми
– Будь-яка мова програмування
– Скоро - практичне заняття