Top Banner
Вдосконалені алгоритми сортування Олександр Бабич MCT/MCPD/MCITP/OCUP Advanced [email protected] http://ProductivityBlog.com.ua
48

Вдосконалені алгоритми сортування

May 24, 2015

Download

Education

Презентация с моего открытого занятия от 14.02.2011
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Вдосконалені алгоритми сортування

Вдосконалені алгоритми

сортування

Олександр Бабич

MCT/MCPD/MCITP/OCUP Advanced

[email protected]

http://ProductivityBlog.com.ua

Page 2: Вдосконалені алгоритми сортування

Перш, ніж почнемо

Page 3: Вдосконалені алгоритми сортування

Спочатку трохи розважимось

1. Що таке масив?

2. Що таке ключ сортування?

3. Які характеристики алгоритму сортування слід брати

до уваги?

4. В чому полягає суть бульбашкового сортування?

5. Яку основну ідею покладено в основу алгоритму

прямого включення?

6. Опишіть принцип роботи алгоритму прямого вибору?

7. Вдосконаленням якого алгоритму є шейкерне

сортування?

8. Які види пошуку можна виконувати в масивах?

9. Що таке бінарний пошук?

10. В чому полягає ідея еврістичного пошуку?

11. Що таке рекурсія?

Page 4: Вдосконалені алгоритми сортування

А тепер – до справи!

• Навіщо це все?

– Розглянути вдосконалені методи

сортування

– Побачити перспективи їх застосування в

реальному житті

– Отримати знання, необхідні для розробки

реального бізнес-ПЗ

• Що далі?

– Практичне заняття

• Дивись типові завдання з теми

Page 5: Вдосконалені алгоритми сортування

Ще дещо

• Продовжуємо малювати ментальні

карти

– В зошиті

– В онлайні спільними зусиллями

• В кінці заняття я продемонструю

онлайнову карту

• І не забудьте про електронний

підручник!

• Використовуємо

Page 7: Вдосконалені алгоритми сортування

Про що піде мова

Повторення: прості алгоритми сортування

Особливості вдосконалених алгоритмів

Сортування Шелла

Швидке сортування

Пірамідальне сортування

Типові завдання з теми

Page 8: Вдосконалені алгоритми сортування

Про що піде мова

Повторення: прості алгоритми сортування

Особливості вдосконалених алгоритмів

Сортування Шелла

Швидке сортування

Пірамідальне сортування

Типові завдання з теми

Page 9: Вдосконалені алгоритми сортування

Масиви

• впорядкований набір однотипних

елементів

– базовий тип

– кількість вимірів

– кількість елементів

– спосіб опису

Page 10: Вдосконалені алгоритми сортування

Операції над масивами

• розбивка

• злиття

• перетворення

• сортування

– характеристики

• середня швидкість

• швидкість у граничних випадках

• природність поведінки

• перестановка елементів з однаковими

індексами?

• пошук

Page 11: Вдосконалені алгоритми сортування

Ключ сортування

• Критерій для впорядкування елементів

– обчислюваний

• F(x)

– необчислюваний

• Згадаймо

про БД!

Page 12: Вдосконалені алгоритми сортування

Бульбашкове сортування

• ~n2

• порівняння сусідніх елементів

– перестановка

• вкладені цикли

Page 13: Вдосконалені алгоритми сортування

Метод прямого включення

• масив розбивається на дві частини

– відсортована

– невідсортована

• на кожному кроці беремо з

невідсортованої один елемент

– починаємо з i=2

– переміщуємо у

відсортовану

• не порушуємо порядку

• вкладені цикли

• ~ln(n)

Page 14: Вдосконалені алгоритми сортування

Метод прямого вибору

• найменший елемент міняється місцями

з першим

– повторюємо, доки не дійдемо до кінця

Page 15: Вдосконалені алгоритми сортування

Шейкерне сортування

• вдосконалення бульбашкового

• крок вперед - крок назад

Page 16: Вдосконалені алгоритми сортування

Сортування злиттям

• є 2 масиви, відсортовані в порядку

зростання

• треба об'єднати їх, не порушивши

порядку

• порівнюємо перші, потім другі елементи

і т.д.

Page 17: Вдосконалені алгоритми сортування

Критерії пошуку елементів

• пошук позиції

• пошук елемента, який задовольняє

певну умову

– min

– max

– медіана

– n-те найменше значення

17

Page 18: Вдосконалені алгоритми сортування

Простий перебір

• ~n

Page 19: Вдосконалені алгоритми сортування

Пошук у відсортованому масиві

• бінарний пошук

– метод дихотомії

• поділ навпіл

– рекурсія

– ітеративний процес

Page 20: Вдосконалені алгоритми сортування

Еврістичні методи

• товари у супермаркеті

• індекси

• історія запитів користувачів

Page 21: Вдосконалені алгоритми сортування

Про що піде мова

Повторення: прості алгоритми сортування

Особливості вдосконалених алгоритмів

Сортування Шелла

Швидке сортування

Пірамідальне сортування

Типові завдання з теми

Page 22: Вдосконалені алгоритми сортування

Про що піде мова

Повторення: прості алгоритми сортування

Особливості вдосконалених алгоритмів

Сортування Шелла

Швидке сортування

Пірамідальне сортування

Типові завдання з теми

Page 23: Вдосконалені алгоритми сортування

Особливості вдосконалених

методів

• швидкість ~ln(n)

– спочатку швидко росте

– потім стабілізується

– Логарифм

• для великих масивів

– для малих - прості методи

• пряма вставка

• шейкерний

• простого вибору

• Основні вдосконалені методи сортування

– Шелла

– швидке сортування

– пірамідальне

Page 24: Вдосконалені алгоритми сортування

Про що піде мова

Повторення: прості алгоритми сортування

Особливості вдосконалених алгоритмів

Сортування Шелла

Швидке сортування

Пірамідальне сортування

Типові завдання з теми

Page 25: Вдосконалені алгоритми сортування

Про що піде мова

Повторення: прості алгоритми сортування

Особливості вдосконалених алгоритмів

Сортування Шелла

Швидке сортування

Пірамідальне сортування

Типові завдання з теми

Page 26: Вдосконалені алгоритми сортування

Сортування Шелла

• вдосконалена проста вставка

– кожен елемент переміщується на половину

відсортованого масива

• переміщення на більші відстані

– змінна довжина кроку

• 4 - 2 - 1

• на останньому кроці масив вже впорядковано

• час виконання ~x1.2

– x2 для простої вставки

• приклад - в електронному підручнику

Page 27: Вдосконалені алгоритми сортування

Про що піде мова

Повторення: прості алгоритми сортування

Особливості вдосконалених алгоритмів

Сортування Шелла

Швидке сортування

Пірамідальне сортування

Типові завдання з теми

Page 28: Вдосконалені алгоритми сортування

Про що піде мова

Повторення: прості алгоритми сортування

Особливості вдосконалених алгоритмів

Сортування Шелла

Швидке сортування

Пірамідальне сортування

Типові завдання з теми

Page 29: Вдосконалені алгоритми сортування

Швидке сортування

• вдосконалений бульбашковий

• перестановки далеко розташованих елементів

– приклад - масив, відсортований у зворотному

порядку

• n/2 кроків

• обирають деякий елемент m

– всі менші елементи - ліворуч від m

– всі більші елементи - праворуч m

Page 30: Вдосконалені алгоритми сортування

Швидке сортування

• повторюють попередню процедуру для лівої і

правої частин масиву

• рекурсія

– медіана

• ймовірність =1/n

• центральний елемент

• приклад - в електронному підручнику

Page 31: Вдосконалені алгоритми сортування

Про що піде мова

Повторення: прості алгоритми сортування

Особливості вдосконалених алгоритмів

Сортування Шелла

Швидке сортування

Пірамідальне сортування

Типові завдання з теми

Page 32: Вдосконалені алгоритми сортування

Про що піде мова

Повторення: прості алгоритми сортування

Особливості вдосконалених алгоритмів

Сортування Шелла

Швидке сортування

Пірамідальне сортування

Типові завдання з теми

Page 33: Вдосконалені алгоритми сортування

Пірамідальне сортування

• вдосконалення прямого вибору

– ітеративний пошук найменшого

• на перше місце

• повторення для 2..n, 3..n, ...

– n-1, n-2, n-3, ...

– (n2-n)/2

– розбиваємо масив на пари

• попарне порівняння

• n/2 порівнянь

– в кожній парі беремо найменші елементи і

порівнюємо

• n/4 порівнянь

Page 34: Вдосконалені алгоритми сортування

Пірамідальне сортування

• за n порівнянь – знайдемо найменший елемент

– побудуємо дерево елементів

• піраміда

• елементи пронумеровані від 1 до R

• x(i) <= x(i∙2)

• x(i) <= x(i∙2+1)

– забираємо верхній (найменший) елемент

• міняємо його на найменший з нижніх елементів

– після n повторень піраміда буде пустою

• приклад - в електронному підручнику

Page 35: Вдосконалені алгоритми сортування

Пірамідальне сортування

• Піраміда = дерево

• Двійкові дерева

– Будемо розглядати пізніше

– Лежать в основі багатьох

алгоритмів

Чудовий приклад – Акінатор

інтернет-геній

Спробуємо?

Page 36: Вдосконалені алгоритми сортування

Про що піде мова

Повторення: прості алгоритми сортування

Особливості вдосконалених алгоритмів

Сортування Шелла

Швидке сортування

Пірамідальне сортування

Типові завдання з теми

Page 37: Вдосконалені алгоритми сортування

Про що піде мова

Повторення: прості алгоритми сортування

Особливості вдосконалених алгоритмів

Сортування Шелла

Швидке сортування

Пірамідальне сортування

Типові завдання з теми

Page 38: Вдосконалені алгоритми сортування

Типові завдання з теми

• Розглянуті методи

– реалізація алгоритмів будь-якою мовою

• Практичне застосування

– Математика

• сортування матриць

– Лінгвістика

• сортування текстових файлів

– Економіка і планування

• Оптимізація

– задача про два верстати

Page 39: Вдосконалені алгоритми сортування

Підводимо підсумки

• Для великих масивів є сенс

використовувати вдосконалені

алгоритми сортування

• Основними вдосконаленнями є

алгоритм Шелла, швидке і пірамідальне

сортування

• Розглянуті алгоритми можуть бути

застосовані в математиці, економіці,

системах штучного інтелекту…

• Ці методи варто вивчити з метою

подальшого застосування!

Page 40: Вдосконалені алгоритми сортування

Є запитання?

Page 41: Вдосконалені алгоритми сортування

Мої запитання

• Для яких масивів є сенс

використовувати розглянуті методи?

• Вдосконаленням якого методу є

алгоритм Шелла?

• На основі якого алгоритму побудовано

метод швидкого сортування?

• Який метод засновано на ідеях

алгоритму прямого вибору?

Page 42: Вдосконалені алгоритми сортування

Хочете знати більше?

• Електронний підручник

• Структуры данных и алгоритмы

http://black-zorro.com

• Kantor Ilia. Алгоритмы сортировки

http://algolist.manual.ru/sort/

• Алгоритм сортировки (Википедия)

• Категория:Алгоритмы сортировки (Википедия)

• Алгоритмы сортировки (Викиучебник)

• Как работают алгоритмы сортировки

http://habrahabr.ru/blogs/algorithm/104583/

Page 43: Вдосконалені алгоритми сортування

Хочете cпробувати?

• Sorting Algorithm Animations

http://www.sorting-algorithms.com/

• Наглядные анимации всех основных

методов сортировки

Page 44: Вдосконалені алгоритми сортування

Ментальна карта

• Альтернатива конспекту

• Цілісний візуальний образ

• Будуємо для кожної теми

• З використанням онлайнових сервісів

може будуватись спільно

Подивимось?

Page 45: Вдосконалені алгоритми сортування

Домашнє завдання

1. Допрацювати ментальну карту

– Диктант на початку наступного заняття

2. Виконати будь-які два завдання з 15

запропонованих до цієї теми

– Будь-яка мова програмування

– Скоро - практичне заняття

Page 46: Вдосконалені алгоритми сортування

Треба повторити?

• Дивіться цю презентацію на

http://slideshare.net/liketaurus

Page 47: Вдосконалені алгоритми сортування

Дякую за увагу!

Page 48: Вдосконалені алгоритми сортування

Цю презентацію було

продемонстровано в

ППК НТУ «ХПІ»

в ході відкритого заняття з

дисципліни

«Теорія алгоритмів і структур даних»

14 лютого 2011 р.