SlideShare a Scribd company logo
1 of 48
Download to read offline
Вдосконалені алгоритми
сортування
                              Олександр Бабич
             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 р.

More Related Content

What's hot

Урок 32 для 6 класу - Розв’язання задачі методом поділу на підзадачі
Урок 32 для 6 класу - Розв’язання задачі методом поділу на підзадачіУрок 32 для 6 класу - Розв’язання задачі методом поділу на підзадачі
Урок 32 для 6 класу - Розв’язання задачі методом поділу на підзадачіVsimPPT
 
Поняття мови програмування. Складові мови програмування (інформатика 8 клас)
Поняття мови програмування. Складові мови програмування (інформатика 8 клас)Поняття мови програмування. Складові мови програмування (інформатика 8 клас)
Поняття мови програмування. Складові мови програмування (інформатика 8 клас)Igor igorvolinec
 
Презентація до уроку : "Степенева функція. Графік та властивості"
Презентація до уроку : "Степенева функція. Графік та властивості"Презентація до уроку : "Степенева функція. Графік та властивості"
Презентація до уроку : "Степенева функція. Графік та властивості"yuraravlinko
 
Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...
Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...
Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...Василь Тереховський
 
4 клас 19 урок. Створення і надсилання електронних листів.
4 клас 19 урок. Створення і надсилання електронних листів.4 клас 19 урок. Створення і надсилання електронних листів.
4 клас 19 урок. Створення і надсилання електронних листів.StAlKeRoV
 
Оснви програмування . Паскаль ч.2
Оснви програмування . Паскаль ч.2Оснви програмування . Паскаль ч.2
Оснви програмування . Паскаль ч.2rznz
 
Інформатика-5. Урок 5. Персональний комп'ютер та його складові
Інформатика-5. Урок 5. Персональний комп'ютер та його складовіІнформатика-5. Урок 5. Персональний комп'ютер та його складові
Інформатика-5. Урок 5. Персональний комп'ютер та його складовіВолодимир Бондар
 
Презентація:Переставна та сполучна властивості додавання
Презентація:Переставна та сполучна властивості додаванняПрезентація:Переставна та сполучна властивості додавання
Презентація:Переставна та сполучна властивості додаванняsveta7940
 
Урок 54 для 9 класу - Малюнки та гіперпосилання на веб-сторінках
Урок 54 для 9 класу - Малюнки та гіперпосилання на веб-сторінкахУрок 54 для 9 класу - Малюнки та гіперпосилання на веб-сторінках
Урок 54 для 9 класу - Малюнки та гіперпосилання на веб-сторінкахVsimPPT
 
Презентація. Формат даних.pptx 6 клас. інформатика
Презентація. Формат даних.pptx 6 клас. інформатикаПрезентація. Формат даних.pptx 6 клас. інформатика
Презентація. Формат даних.pptx 6 клас. інформатикаtsymbalyuknastya99
 
4 клас алгоритм з розгалуженням урок 20
4 клас алгоритм з розгалуженням урок 204 клас алгоритм з розгалуженням урок 20
4 клас алгоритм з розгалуженням урок 20Жанна Коваль
 
Презентація на тему: Комп'ютерна графіка
Презентація на тему: Комп'ютерна графікаПрезентація на тему: Комп'ютерна графіка
Презентація на тему: Комп'ютерна графікаmishakarpovets1999
 
Урок 1. Поняття комп'ютерної графіки. Растрові зображення, їхні властивості.
Урок 1. Поняття комп'ютерної графіки. Растрові зображення, їхні властивості.Урок 1. Поняття комп'ютерної графіки. Растрові зображення, їхні властивості.
Урок 1. Поняття комп'ютерної графіки. Растрові зображення, їхні властивості.Ihor Tkachenko
 
Алгоритми з повторенням
Алгоритми з повтореннямАлгоритми з повторенням
Алгоритми з повтореннямal12309
 
інформатика. 5 клас. мій конспект. 2018
інформатика. 5 клас. мій конспект. 2018інформатика. 5 клас. мій конспект. 2018
інформатика. 5 клас. мій конспект. 2018ssuserb2b046
 

What's hot (20)

Урок 32 для 6 класу - Розв’язання задачі методом поділу на підзадачі
Урок 32 для 6 класу - Розв’язання задачі методом поділу на підзадачіУрок 32 для 6 класу - Розв’язання задачі методом поділу на підзадачі
Урок 32 для 6 класу - Розв’язання задачі методом поділу на підзадачі
 
Поняття мови програмування. Складові мови програмування (інформатика 8 клас)
Поняття мови програмування. Складові мови програмування (інформатика 8 клас)Поняття мови програмування. Складові мови програмування (інформатика 8 клас)
Поняття мови програмування. Складові мови програмування (інформатика 8 клас)
 
Презентація до уроку : "Степенева функція. Графік та властивості"
Презентація до уроку : "Степенева функція. Графік та властивості"Презентація до уроку : "Степенева функція. Графік та властивості"
Презентація до уроку : "Степенева функція. Графік та властивості"
 
Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...
Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...
Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...
 
4 клас 19 урок. Створення і надсилання електронних листів.
4 клас 19 урок. Створення і надсилання електронних листів.4 клас 19 урок. Створення і надсилання електронних листів.
4 клас 19 урок. Створення і надсилання електронних листів.
 
Оснви програмування . Паскаль ч.2
Оснви програмування . Паскаль ч.2Оснви програмування . Паскаль ч.2
Оснви програмування . Паскаль ч.2
 
Інформатика-5. Урок 5. Персональний комп'ютер та його складові
Інформатика-5. Урок 5. Персональний комп'ютер та його складовіІнформатика-5. Урок 5. Персональний комп'ютер та його складові
Інформатика-5. Урок 5. Персональний комп'ютер та його складові
 
SOS у морі Інтернету
SOS у морі ІнтернетуSOS у морі Інтернету
SOS у морі Інтернету
 
Презентація:Переставна та сполучна властивості додавання
Презентація:Переставна та сполучна властивості додаванняПрезентація:Переставна та сполучна властивості додавання
Презентація:Переставна та сполучна властивості додавання
 
Урок 54 для 9 класу - Малюнки та гіперпосилання на веб-сторінках
Урок 54 для 9 класу - Малюнки та гіперпосилання на веб-сторінкахУрок 54 для 9 класу - Малюнки та гіперпосилання на веб-сторінках
Урок 54 для 9 класу - Малюнки та гіперпосилання на веб-сторінках
 
7_2601.pptx
7_2601.pptx7_2601.pptx
7_2601.pptx
 
6 клас урок 5
6 клас урок 56 клас урок 5
6 клас урок 5
 
Презентація. Формат даних.pptx 6 клас. інформатика
Презентація. Формат даних.pptx 6 клас. інформатикаПрезентація. Формат даних.pptx 6 клас. інформатика
Презентація. Формат даних.pptx 6 клас. інформатика
 
4 клас алгоритм з розгалуженням урок 20
4 клас алгоритм з розгалуженням урок 204 клас алгоритм з розгалуженням урок 20
4 клас алгоритм з розгалуженням урок 20
 
Презентація на тему: Комп'ютерна графіка
Презентація на тему: Комп'ютерна графікаПрезентація на тему: Комп'ютерна графіка
Презентація на тему: Комп'ютерна графіка
 
Урок 1. Поняття комп'ютерної графіки. Растрові зображення, їхні властивості.
Урок 1. Поняття комп'ютерної графіки. Растрові зображення, їхні властивості.Урок 1. Поняття комп'ютерної графіки. Растрові зображення, їхні властивості.
Урок 1. Поняття комп'ютерної графіки. Растрові зображення, їхні властивості.
 
Алгоритми з повторенням
Алгоритми з повтореннямАлгоритми з повторенням
Алгоритми з повторенням
 
урок 2 інформаційні процеси та пристрої для їх підтримки
урок 2 інформаційні процеси та пристрої для їх підтримки урок 2 інформаційні процеси та пристрої для їх підтримки
урок 2 інформаційні процеси та пристрої для їх підтримки
 
6 клас урок 17
6 клас урок 176 клас урок 17
6 клас урок 17
 
інформатика. 5 клас. мій конспект. 2018
інформатика. 5 клас. мій конспект. 2018інформатика. 5 клас. мій конспект. 2018
інформатика. 5 клас. мій конспект. 2018
 

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

Основи програмування в Скретч. Подання алгоритмів за допомогою блок-схем
Основи програмування в Скретч. Подання алгоритмів за допомогою блок-схемОснови програмування в Скретч. Подання алгоритмів за допомогою блок-схем
Основи програмування в Скретч. Подання алгоритмів за допомогою блок-схемe-ranok e-ranok
 
05 Швидке сортування
05 Швидке сортування05 Швидке сортування
05 Швидке сортуванняOleksii Molchanovskyi
 
03 problem solving_with_search
03 problem solving_with_search03 problem solving_with_search
03 problem solving_with_searchLStudio
 

Similar to Вдосконалені алгоритми сортування (7)

ACM2020_Lecture1
ACM2020_Lecture1ACM2020_Lecture1
ACM2020_Lecture1
 
l9
l9l9
l9
 
Основи програмування в Скретч. Подання алгоритмів за допомогою блок-схем
Основи програмування в Скретч. Подання алгоритмів за допомогою блок-схемОснови програмування в Скретч. Подання алгоритмів за допомогою блок-схем
Основи програмування в Скретч. Подання алгоритмів за допомогою блок-схем
 
05 Швидке сортування
05 Швидке сортування05 Швидке сортування
05 Швидке сортування
 
03 problem solving_with_search
03 problem solving_with_search03 problem solving_with_search
03 problem solving_with_search
 
01 Вступ
01 Вступ01 Вступ
01 Вступ
 
урок 5
урок 5урок 5
урок 5
 

More from Alexander Babich

Актуальні курси з мого арсеналу (Бабич О.В.)
Актуальні курси з мого арсеналу (Бабич О.В.)Актуальні курси з мого арсеналу (Бабич О.В.)
Актуальні курси з мого арсеналу (Бабич О.В.)Alexander Babich
 
M365: Word, Excel, PowerPoint...
M365: Word, Excel, PowerPoint...M365: Word, Excel, PowerPoint...
M365: Word, Excel, PowerPoint...Alexander Babich
 
M365: Інші сервіси та застосунки
M365: Інші сервіси та застосункиM365: Інші сервіси та застосунки
M365: Інші сервіси та застосункиAlexander Babich
 
M365: Завершення
M365: ЗавершенняM365: Завершення
M365: ЗавершенняAlexander Babich
 
M365: рекомендації
M365: рекомендаціїM365: рекомендації
M365: рекомендаціїAlexander Babich
 
M365: Огляд платформи Microsoft365
M365: Огляд платформи Microsoft365M365: Огляд платформи Microsoft365
M365: Огляд платформи Microsoft365Alexander Babich
 
M365: Роздаткові матеріали
M365: Роздаткові матеріалиM365: Роздаткові матеріали
M365: Роздаткові матеріалиAlexander Babich
 
Meet&Code - VR, метавсесвіт та криптовалюти (1).pptx
Meet&Code - VR, метавсесвіт та криптовалюти (1).pptxMeet&Code - VR, метавсесвіт та криптовалюти (1).pptx
Meet&Code - VR, метавсесвіт та криптовалюти (1).pptxAlexander Babich
 
Ви обрали професію програміста
Ви обрали професію програмістаВи обрали професію програміста
Ви обрали професію програмістаAlexander Babich
 
Змішане навчання в ППФК
Змішане навчання в ППФКЗмішане навчання в ППФК
Змішане навчання в ППФКAlexander Babich
 
Формування професійних інтересів студентів
Формування професійних інтересів студентівФормування професійних інтересів студентів
Формування професійних інтересів студентівAlexander Babich
 
День відкритих дверей' 2021
День відкритих дверей' 2021День відкритих дверей' 2021
День відкритих дверей' 2021Alexander Babich
 
06. Обучение и сертификация по Azure
06. Обучение и сертификация по Azure06. Обучение и сертификация по Azure
06. Обучение и сертификация по AzureAlexander Babich
 
05.Внедрение Azure
05.Внедрение Azure05.Внедрение Azure
05.Внедрение AzureAlexander Babich
 
04.Службы Azure - подробнее
04.Службы Azure - подробнее04.Службы Azure - подробнее
04.Службы Azure - подробнееAlexander Babich
 
03.Сколько стоит облако
03.Сколько стоит облако03.Сколько стоит облако
03.Сколько стоит облакоAlexander Babich
 

More from Alexander Babich (20)

Актуальні курси з мого арсеналу (Бабич О.В.)
Актуальні курси з мого арсеналу (Бабич О.В.)Актуальні курси з мого арсеналу (Бабич О.В.)
Актуальні курси з мого арсеналу (Бабич О.В.)
 
M365: Word, Excel, PowerPoint...
M365: Word, Excel, PowerPoint...M365: Word, Excel, PowerPoint...
M365: Word, Excel, PowerPoint...
 
M365: Інші сервіси та застосунки
M365: Інші сервіси та застосункиM365: Інші сервіси та застосунки
M365: Інші сервіси та застосунки
 
M365: OneDrive
M365: OneDriveM365: OneDrive
M365: OneDrive
 
M365: Завершення
M365: ЗавершенняM365: Завершення
M365: Завершення
 
M365: SharePoint
M365: SharePointM365: SharePoint
M365: SharePoint
 
M365: рекомендації
M365: рекомендаціїM365: рекомендації
M365: рекомендації
 
M365: Огляд платформи Microsoft365
M365: Огляд платформи Microsoft365M365: Огляд платформи Microsoft365
M365: Огляд платформи Microsoft365
 
M365: Вступ
M365: ВступM365: Вступ
M365: Вступ
 
M365: Роздаткові матеріали
M365: Роздаткові матеріалиM365: Роздаткові матеріали
M365: Роздаткові матеріали
 
Meet&Code - VR, метавсесвіт та криптовалюти (1).pptx
Meet&Code - VR, метавсесвіт та криптовалюти (1).pptxMeet&Code - VR, метавсесвіт та криптовалюти (1).pptx
Meet&Code - VR, метавсесвіт та криптовалюти (1).pptx
 
Ви обрали професію програміста
Ви обрали професію програмістаВи обрали професію програміста
Ви обрали професію програміста
 
Змішане навчання в ППФК
Змішане навчання в ППФКЗмішане навчання в ППФК
Змішане навчання в ППФК
 
Формування професійних інтересів студентів
Формування професійних інтересів студентівФормування професійних інтересів студентів
Формування професійних інтересів студентів
 
День відкритих дверей' 2021
День відкритих дверей' 2021День відкритих дверей' 2021
День відкритих дверей' 2021
 
Спробуйте Python
Спробуйте PythonСпробуйте Python
Спробуйте Python
 
06. Обучение и сертификация по Azure
06. Обучение и сертификация по Azure06. Обучение и сертификация по Azure
06. Обучение и сертификация по Azure
 
05.Внедрение Azure
05.Внедрение Azure05.Внедрение Azure
05.Внедрение Azure
 
04.Службы Azure - подробнее
04.Службы Azure - подробнее04.Службы Azure - подробнее
04.Службы Azure - подробнее
 
03.Сколько стоит облако
03.Сколько стоит облако03.Сколько стоит облако
03.Сколько стоит облако
 

Recently uploaded

upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdfupd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdfssuser54595a
 
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»tetiana1958
 
Р.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняР.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняAdriana Himinets
 
Відкрита лекція на тему «Біологічний захист рослин у теплицях»
Відкрита лекція на тему «Біологічний захист рослин у теплицях»Відкрита лекція на тему «Біологічний захист рослин у теплицях»
Відкрита лекція на тему «Біологічний захист рослин у теплицях»tetiana1958
 
О.Духнович - пророк народної правди. Біографія
О.Духнович - пророк народної правди. БіографіяО.Духнович - пророк народної правди. Біографія
О.Духнович - пророк народної правди. БіографіяAdriana Himinets
 

Recently uploaded (8)

upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdfupd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
 
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
 
Її величність - українська книга презентація-огляд 2024.pptx
Її величність - українська книга презентація-огляд 2024.pptxЇї величність - українська книга презентація-огляд 2024.pptx
Її величність - українська книга презентація-огляд 2024.pptx
 
Р.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняР.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповідання
 
Відкрита лекція на тему «Біологічний захист рослин у теплицях»
Відкрита лекція на тему «Біологічний захист рослин у теплицях»Відкрита лекція на тему «Біологічний захист рослин у теплицях»
Відкрита лекція на тему «Біологічний захист рослин у теплицях»
 
Віртуальна виставка нових надходжень 2-24.pptx
Віртуальна виставка нових надходжень 2-24.pptxВіртуальна виставка нових надходжень 2-24.pptx
Віртуальна виставка нових надходжень 2-24.pptx
 
Віртуальна виставка «Аграрна наука України у виданнях: історичний аспект»
Віртуальна виставка «Аграрна наука України у виданнях: історичний аспект»Віртуальна виставка «Аграрна наука України у виданнях: історичний аспект»
Віртуальна виставка «Аграрна наука України у виданнях: історичний аспект»
 
О.Духнович - пророк народної правди. Біографія
О.Духнович - пророк народної правди. БіографіяО.Духнович - пророк народної правди. Біографія
О.Духнович - пророк народної правди. Біографія
 

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

  • 1. Вдосконалені алгоритми сортування Олександр Бабич MCT/MCPD/MCITP/OCUP Advanced alexander.taurus@gmail.com http://ProductivityBlog.com.ua
  • 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) – необчислюваний • Згадаймо про БД!
  • 12. Бульбашкове сортування • ~n2 • порівняння сусідніх елементів – перестановка • вкладені цикли
  • 13. Метод прямого включення • масив розбивається на дві частини – відсортована – невідсортована • на кожному кроці беремо з невідсортованої один елемент – починаємо з i=2 – переміщуємо у відсортовану • не порушуємо порядку • вкладені цикли • ~ln(n)
  • 14. Метод прямого вибору • найменший елемент міняється місцями з першим – повторюємо, доки не дійдемо до кінця
  • 15. Шейкерне сортування • вдосконалення бульбашкового • крок вперед - крок назад
  • 16. Сортування злиттям • є 2 масиви, відсортовані в порядку зростання • треба об'єднати їх, не порушивши порядку • порівнюємо перші, потім другі елементи і т.д.
  • 17. Критерії пошуку елементів • пошук позиції • пошук елемента, який задовольняє певну умову – min – max – медіана – n-те найменше значення 17
  • 19. Пошук у відсортованому масиві • бінарний пошук – метод дихотомії • поділ навпіл – рекурсія – ітеративний процес
  • 20. Еврістичні методи • товари у супермаркеті • індекси • історія запитів користувачів
  • 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 запропонованих до цієї теми – Будь-яка мова програмування – Скоро - практичне заняття
  • 46. Треба повторити? • Дивіться цю презентацію на http://slideshare.net/liketaurus
  • 48. Цю презентацію було продемонстровано в ППК НТУ «ХПІ» в ході відкритого заняття з дисципліни «Теорія алгоритмів і структур даних» 14 лютого 2011 р.