View
2.502
Download
6
Category
Preview:
DESCRIPTION
Презентация с моего открытого занятия от 14.02.2011
Citation preview
Вдосконалені алгоритми
сортування
Олександр Бабич
MCT/MCPD/MCITP/OCUP Advanced
alexander.taurus@gmail.com
http://ProductivityBlog.com.ua
Перш, ніж почнемо
Спочатку трохи розважимось
1. Що таке масив?
2. Що таке ключ сортування?
3. Які характеристики алгоритму сортування слід брати
до уваги?
4. В чому полягає суть бульбашкового сортування?
5. Яку основну ідею покладено в основу алгоритму
прямого включення?
6. Опишіть принцип роботи алгоритму прямого вибору?
7. Вдосконаленням якого алгоритму є шейкерне
сортування?
8. Які види пошуку можна виконувати в масивах?
9. Що таке бінарний пошук?
10. В чому полягає ідея еврістичного пошуку?
11. Що таке рекурсія?
А тепер – до справи!
• Навіщо це все?
– Розглянути вдосконалені методи
сортування
– Побачити перспективи їх застосування в
реальному житті
– Отримати знання, необхідні для розробки
реального бізнес-ПЗ
• Що далі?
– Практичне заняття
• Дивись типові завдання з теми
Ще дещо
• Продовжуємо малювати ментальні
карти
– В зошиті
– В онлайні спільними зусиллями
• В кінці заняття я продемонструю
онлайнову карту
• І не забудьте про електронний
підручник!
• Використовуємо
Ще дещо
• Презентація і план заняття – у вільному
доступі на 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
Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
Масиви
• впорядкований набір однотипних
елементів
– базовий тип
– кількість вимірів
– кількість елементів
– спосіб опису
Операції над масивами
• розбивка
• злиття
• перетворення
• сортування
– характеристики
• середня швидкість
• швидкість у граничних випадках
• природність поведінки
• перестановка елементів з однаковими
індексами?
• пошук
Ключ сортування
• Критерій для впорядкування елементів
– обчислюваний
• F(x)
– необчислюваний
• Згадаймо
про БД!
Бульбашкове сортування
• ~n2
• порівняння сусідніх елементів
– перестановка
• вкладені цикли
Метод прямого включення
• масив розбивається на дві частини
– відсортована
– невідсортована
• на кожному кроці беремо з
невідсортованої один елемент
– починаємо з i=2
– переміщуємо у
відсортовану
• не порушуємо порядку
• вкладені цикли
• ~ln(n)
Метод прямого вибору
• найменший елемент міняється місцями
з першим
– повторюємо, доки не дійдемо до кінця
Шейкерне сортування
• вдосконалення бульбашкового
• крок вперед - крок назад
Сортування злиттям
• є 2 масиви, відсортовані в порядку
зростання
• треба об'єднати їх, не порушивши
порядку
• порівнюємо перші, потім другі елементи
і т.д.
Критерії пошуку елементів
• пошук позиції
• пошук елемента, який задовольняє
певну умову
– min
– max
– медіана
– n-те найменше значення
17
Простий перебір
• ~n
Пошук у відсортованому масиві
• бінарний пошук
– метод дихотомії
• поділ навпіл
– рекурсія
– ітеративний процес
Еврістичні методи
• товари у супермаркеті
• індекси
• історія запитів користувачів
Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
Особливості вдосконалених
методів
• швидкість ~ln(n)
– спочатку швидко росте
– потім стабілізується
– Логарифм
• для великих масивів
– для малих - прості методи
• пряма вставка
• шейкерний
• простого вибору
• Основні вдосконалені методи сортування
– Шелла
– швидке сортування
– пірамідальне
Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
Сортування Шелла
• вдосконалена проста вставка
– кожен елемент переміщується на половину
відсортованого масива
• переміщення на більші відстані
– змінна довжина кроку
• 4 - 2 - 1
• на останньому кроці масив вже впорядковано
• час виконання ~x1.2
– x2 для простої вставки
• приклад - в електронному підручнику
Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
Швидке сортування
• вдосконалений бульбашковий
• перестановки далеко розташованих елементів
– приклад - масив, відсортований у зворотному
порядку
• n/2 кроків
• обирають деякий елемент m
– всі менші елементи - ліворуч від m
– всі більші елементи - праворуч m
Швидке сортування
• повторюють попередню процедуру для лівої і
правої частин масиву
• рекурсія
– медіана
• ймовірність =1/n
• центральний елемент
• приклад - в електронному підручнику
Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
Пірамідальне сортування
• вдосконалення прямого вибору
– ітеративний пошук найменшого
• на перше місце
• повторення для 2..n, 3..n, ...
– n-1, n-2, n-3, ...
– (n2-n)/2
– розбиваємо масив на пари
• попарне порівняння
• n/2 порівнянь
– в кожній парі беремо найменші елементи і
порівнюємо
• n/4 порівнянь
Пірамідальне сортування
• за n порівнянь – знайдемо найменший елемент
– побудуємо дерево елементів
• піраміда
• елементи пронумеровані від 1 до R
• x(i) <= x(i∙2)
• x(i) <= x(i∙2+1)
– забираємо верхній (найменший) елемент
• міняємо його на найменший з нижніх елементів
– після n повторень піраміда буде пустою
• приклад - в електронному підручнику
Пірамідальне сортування
• Піраміда = дерево
• Двійкові дерева
– Будемо розглядати пізніше
– Лежать в основі багатьох
алгоритмів
Чудовий приклад – Акінатор
інтернет-геній
Спробуємо?
Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
Про що піде мова
Повторення: прості алгоритми сортування
Особливості вдосконалених алгоритмів
Сортування Шелла
Швидке сортування
Пірамідальне сортування
Типові завдання з теми
Типові завдання з теми
• Розглянуті методи
– реалізація алгоритмів будь-якою мовою
• Практичне застосування
– Математика
• сортування матриць
– Лінгвістика
• сортування текстових файлів
– Економіка і планування
• Оптимізація
– задача про два верстати
Підводимо підсумки
• Для великих масивів є сенс
використовувати вдосконалені
алгоритми сортування
• Основними вдосконаленнями є
алгоритм Шелла, швидке і пірамідальне
сортування
• Розглянуті алгоритми можуть бути
застосовані в математиці, економіці,
системах штучного інтелекту…
• Ці методи варто вивчити з метою
подальшого застосування!
Є запитання?
Мої запитання
• Для яких масивів є сенс
використовувати розглянуті методи?
• Вдосконаленням якого методу є
алгоритм Шелла?
• На основі якого алгоритму побудовано
метод швидкого сортування?
• Який метод засновано на ідеях
алгоритму прямого вибору?
Хочете знати більше?
• Електронний підручник
• Структуры данных и алгоритмы
http://black-zorro.com
• Kantor Ilia. Алгоритмы сортировки
http://algolist.manual.ru/sort/
• Алгоритм сортировки (Википедия)
• Категория:Алгоритмы сортировки (Википедия)
• Алгоритмы сортировки (Викиучебник)
• Как работают алгоритмы сортировки
http://habrahabr.ru/blogs/algorithm/104583/
Хочете cпробувати?
• Sorting Algorithm Animations
http://www.sorting-algorithms.com/
• Наглядные анимации всех основных
методов сортировки
Ментальна карта
• Альтернатива конспекту
• Цілісний візуальний образ
• Будуємо для кожної теми
• З використанням онлайнових сервісів
може будуватись спільно
Подивимось?
Домашнє завдання
1. Допрацювати ментальну карту
– Диктант на початку наступного заняття
2. Виконати будь-які два завдання з 15
запропонованих до цієї теми
– Будь-яка мова програмування
– Скоро - практичне заняття
Треба повторити?
• Дивіться цю презентацію на
http://slideshare.net/liketaurus
Дякую за увагу!
Цю презентацію було
продемонстровано в
ППК НТУ «ХПІ»
в ході відкритого заняття з
дисципліни
«Теорія алгоритмів і структур даних»
14 лютого 2011 р.
Recommended