Скачать презентацию МЕТОДИ СОРТУВАННЯ Лекція з курсу Структури даних Час Скачать презентацию МЕТОДИ СОРТУВАННЯ Лекція з курсу Структури даних Час

lek_03.pptx

  • Количество слайдов: 54

МЕТОДИ СОРТУВАННЯ Лекція з курсу «Структури даних» Час – 2 год МЕТОДИ СОРТУВАННЯ Лекція з курсу «Структури даних» Час – 2 год

План • Сортування вибором • Сортування вставкою та сортування злиттям. • Сортування обміном і План • Сортування вибором • Сортування вставкою та сортування злиттям. • Сортування обміном і шейкерне сортування. • Сортування Шелла • Швидке сортування (сортування Хоара) • Турнірне сортування • Пірамідальне сортування

Упорядкування елементів множини в зростаючому або спадному порядку називається сортуванням. З упорядкованими елементами простіше Упорядкування елементів множини в зростаючому або спадному порядку називається сортуванням. З упорядкованими елементами простіше працювати, ніж з довільно розташованими: легше знайти необхідні елементи, виключити, вставити нові. Сортування застосовується при організації наборів даних на зовнішніх носіях, при створенні бібліотек, каталогів, баз даних і т. д.

Алгоритми сортування можна розбити на такі групи: Зазвичай сортовані елементи множини називають записами і Алгоритми сортування можна розбити на такі групи: Зазвичай сортовані елементи множини називають записами і позначають через k 1, k 2, … , kn.

Сортування вибором Сортування вибором

Сортування вибором полягає в тому, що спочатку в невпорядкованому списку вибирається і відокремлюється від Сортування вибором полягає в тому, що спочатку в невпорядкованому списку вибирається і відокремлюється від інших найменший елемент. Після цього вихідний список виявляється зміненим. Змінений список приймається за вихідний і процес продовжується до тих пір, поки всі елементи не будуть вибрані. Очевидно, що вибрані елементи утворюють упорядкований список.

Наприклад, потрібно знайти мінімальний елемент списку {5, 11, 6, 4, 9, 2, 15, 7}. Наприклад, потрібно знайти мінімальний елемент списку {5, 11, 6, 4, 9, 2, 15, 7}. Процес вибору зображений на рис. 2, де в кожному рядку виписані порівнювані пари. Можливі елементи з меншою вагою обведені гуртком. Нескладно побачити, що кількість порівнянь відповідає на малюнку числу рядків, а число переміщень - кількості змін обраного елемента.

Рис. 2. Сортування вибором Рис. 2. Сортування вибором

Обраний у вихідному списку мінімальний елемент розміщується на призначеному йому місці декількома способами. • Обраний у вихідному списку мінімальний елемент розміщується на призначеному йому місці декількома способами. • Мінімальний елемент після i-го перегляду переміщається на і-е місце нового списку (і = 1, 2, . . . , n), а у вихідному списку на місце обраного елемента записується якесь дуже велике число, що перевершує за величиною будь елемент списку. • Мінімальний елемент записується на і-е місце вихідного списку (і = 1, 2, . . . , n), а елемент з i-го місця-на місце обраного. При цьому очевидно, що вже впорядковані елементи виключаються з подальшої сортування, тому довжина списку , який бере участь в кожному наступному перегляді буде на один елемент менше попереднього. • Обраний мінімальний елемент, як і в попередньому випадку, переміщається на i-е місце заданого списку, а щоб це i-е місце звільнилося для запису чергового мінімального елемента, ліву від обраного елемента частину списку переміщається вправо на одну позицію так, щоб заповнилося місце , займане до цього вибраним елементом.

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

У цьому методі з невпорядкованої послідовності елементів вибирається по черзі кожен елемент, порівнюється з У цьому методі з невпорядкованої послідовності елементів вибирається по черзі кожен елемент, порівнюється з попереднім, вже впорядкованим, і поміщається на відповідне місце. Сортування вставкою. Таке сортування розглянемо на прикладі заданої невпорядкованою послідовності елементів: {40, 11, 83, 57, 32, 21, 75, 64}. Процедура сортування відображена на рис. 3, де колом на кожному етапі обведений аналізований елемент, стрілкою зверху зазначено місце переміщення аналізованого елемента, в рамку укладені впорядковані частини послідовності.

На 1 -му етапі порівнюються два початкових елемента. Оскільки другий елемент менше першого, він На 1 -му етапі порівнюються два початкових елемента. Оскільки другий елемент менше першого, він переміщається на місце першого елемента, який зсувається вправо на одну позицію. Інша частина послідовності залишається без зміни. На 2 -му етапі з невпорядкованою послідовності вибирається елемент і порівнюється з двома впорядкованими раніше елементами. Так як він більше попередніх, то залишається на місці. Потім аналізуються четвертий, п'ятий і наступні елементи до тих пір, поки весь список не буде впорядкованим, що має місце на останньому 7 -му етапі.

Рис. 3. Сортування вставкою Рис. 3. Сортування вставкою

. Сортування злиттям. Різновидом сортування вставкою є метод фон Неймана, або сортування злиттям. Ідея . Сортування злиттям. Різновидом сортування вставкою є метод фон Неймана, або сортування злиттям. Ідея методу полягає в наступному: спочатку аналізуються перші елементи обох впорядкованих масивів. Менший елемент переписується в новий масив. Той елемент, що залишився послідовно порівнюється з елементами з іншого масиву. У новий масив після кожного порівняння потрапляє менший елемент. Процес триває до вичерпання елементів одного з масивів. Потім залишок іншого масиву дописується в новий масив. Отриманий новий масив впорядкований таким же чином, як вихідні.

Нехай є два відсортованих в порядку зростання масиви p[1], p[2], …, p[n] і q[1], Нехай є два відсортованих в порядку зростання масиви p[1], p[2], …, p[n] і q[1], q[2], …, q[n] та є пустий масив r[1], r[2], . . . , r[2 n], який ми хочемо заповнити значеннями масивів p та q в порядку зростання. Для злиття виконуються наступні дії: порівнюються p[1] та q[1] і менше із значень записується в r[1]. Припустимо, що це значення р[1]. Тоді р[2] порівнюється з q[1] і менше із значень заноситься в r[2]. Припустимо, що це значення q[1]. Тоді на наступному кроці порівнюються значення р [2] та q [2] і т. д. , поки ми не досягнемо закінчення одного з масивів. Тоді залишок іншого масиву просто дописується в «хвіст» масиву r.

. .

Сортування обміном і шейкерне сортування Сортування обміном і шейкерне сортування

Сортування обміном ( «бульбашкою). Це метод, в якому елементи списку послідовно порівнюються між собою Сортування обміном ( «бульбашкою). Це метод, в якому елементи списку послідовно порівнюються між собою і міняються місцями в тому випадку, якщо попередній елемент більше наступного. Потрібно, наприклад, провести сортування списку методом стандартного обміну, або методом «бульбашки» : {40, 11, 83, 57, 32, 21, 75, 64}. Позначимо квадратними дужками із стрілками обмінювані елементи, а без стрілок – порівнювані елементи. Перший етап сортування зображений на рис. 5, а другий етап - на рис. 6.

Нескладно побачити, що після кожного перегляду списку всі елементи, починаючи з останнього, займають свої Нескладно побачити, що після кожного перегляду списку всі елементи, починаючи з останнього, займають свої остаточні позиції, тому їх не слід перевіряти при наступних переглядах. Кожен наступний перегляд виключає чергову позицію зі знайденим максимальним елементом, тим самим скорочуючи список. Після першого перегляду в останній позиції опинився найбільший елемент, рівний 83 (виключаємо його з подальшого розгляду). Другий перегляд виявляє максимальний елемент, рівний 75 і т. д.

 Процес сортування продовжується до тих пір, поки не будуть сформовані всі елементи кінцевого Процес сортування продовжується до тих пір, поки не будуть сформовані всі елементи кінцевого списку або не виконається умова Айверсона. Умова Айверсона: якщо в ході сортування при порівнянні елементів не було зроблено жодної перестановки, то множина вважається впорядкованою (умова Айверсона виконується тільки при кроці (d = 1)

Шейкерне сортування. Очевидний прийом поліпшення алгоритму стандартного обміну - запам'ятовувати, були чи не були Шейкерне сортування. Очевидний прийом поліпшення алгоритму стандартного обміну - запам'ятовувати, були чи не були перестановки в процесі деякого проходу. Якщо в останньому проході перестановок не було, то алгоритм можна закінчувати. Це поліпшення, однак, можна знову ж таки поліпшити, якщо запам'ятовувати не тільки сам факт, що обмін мав місце, але і положення (індекс) останнього обміну. Ясно, що всі пари сусідніх елементів вище цього індексу k вже впорядковані. Тому перегляди можна закінчувати на цьому індексі, а не йти до заздалегідь визначеної нижньої межі для i.

Наприклад, масив {12, 18, 42, 44, 55, 67, 94, 06} за допомогою вдосконаленого «бульбашкового» Наприклад, масив {12, 18, 42, 44, 55, 67, 94, 06} за допомогою вдосконаленого «бульбашкового» сортування можна впорядкувати за один перегляд, а для сортування масиву {94, 06, 12, 18, 42, 44, 55, 67} потрібно сім переглядів. Це наводить на думку: чергувати напрямок послідовних переглядів. Модифікацією сортування стандартним обміном є шейкерне, або човникове, сортування. На рис. 7 наведено схему шейкерного сортування.

Рис. 7. Схема шейкерного сортування Рис. 7. Схема шейкерного сортування

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

У методі Шелла порівнюються не сусідні елементи, а елементи, розташовані на відстані d (де У методі Шелла порівнюються не сусідні елементи, а елементи, розташовані на відстані d (де d - крок між порівнюваними елементами). Якщо d=[n/2], то після кожного перегляду крок d зменшується вдвічі. На останньому перегляді він скорочується до d=1.

Рис. 8. Метод Шелла (d=4) Рис. 8. Метод Шелла (d=4)

Рис. 9. Метод Шелла (d=2) Рис. 9. Метод Шелла (d=2)

Рис. 10. Метод Шелла (d=1) Рис. 10. Метод Шелла (d=1)

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

У методі швидкого сортування фіксується який-небудь ключ (базовий), щодо якого всі елементи з більшою У методі швидкого сортування фіксується який-небудь ключ (базовий), щодо якого всі елементи з більшою вагою переміщуються праворуч, а з меншою - ліворуч. При цьому весь список елементів ділиться щодо базового ключа на дві частини. Для кожної частини процес повторюється. Пояснимо метод на прикладі. На рис. 11 представлені етапи швидкого сортування Хоара. У першому рядку вказана вихідна послідовність.

На відміну від попередніх розглянутих сортувань вже на першому етапі мають місце два факти: На відміну від попередніх розглянутих сортувань вже на першому етапі мають місце два факти: поперше, базовий ключ k 0=40 зайняв своє постійне місце у сортованій послідовності, по-друге, всі елементи ліворуч від k 0 будуть менші нього, а праворуч - більші за нього. Таким чином, після закінчення першого етапу маємо: Вказана процедура сортування знову застосовується незалежно до лівої і правої частин.

Турнірне сортування Турнірне сортування

Елементи вихідної множини представляються листками дерева. Їх попарне порівняння дозволяє визначити мінімальний (максимальний) елемент. Елементи вихідної множини представляються листками дерева. Їх попарне порівняння дозволяє визначити мінімальний (максимальний) елемент. Метод турнірного сортування заснований на повторюваних пошуках найменшого ключа серед n елементів, серед решти n-1 елементів і т. д. Наприклад, зробивши n/2 порівнянь, можна визначити в кожній парі ключів найменший. За допомогою n/4 порівнянь - найменший з пари вже обраних найменших і т. д.

Проробивши n-1 порівнянь, можна побудувати дерево вибору та ідентифікувати його корінь як найменший ключ. Проробивши n-1 порівнянь, можна побудувати дерево вибору та ідентифікувати його корінь як найменший ключ. Рис. 12. Повторювані вибори серед ключів

Наступний етап сортування - спуск вздовж шляху, відзначеного найменшим елементом, та виключення його з Наступний етап сортування - спуск вздовж шляху, відзначеного найменшим елементом, та виключення його з дерева шляхом заміни або на порожній елемент (дірку) в самому низу, або на елемент із сусідньої гілки в проміжних вершинах. Рис. 13. Виключення найменшого елемента з дерева

Елемент, що пересунувся в корінь дерева, знову буде найменшим (тепер уже другим) ключем (рис. Елемент, що пересунувся в корінь дерева, знову буде найменшим (тепер уже другим) ключем (рис. 14), і його можна виключити. Після n таких кроків дерево стане порожнім (тобто в ньому залишаться одні дірки), і процес сортування закінчується. Свою назву турнірне сортування отримало тому, що воно використовується при проведенні змагань, турнірів та олімпіад.

Приклад 1. Дана вихідна множина {а 1, а 2, а. З, а 4, а Приклад 1. Дана вихідна множина {а 1, а 2, а. З, а 4, а 5, а 6, а 7, а 8}. Виконати турнірне сортування Проводиться попарне порівняння вершин дерева (рис. 15). Знайдений мінімальний елемент замінюється спеціальним символом М і поміщається в результуючу множину (рис. 16).

На наступних етапах знайдені мінімальні елементи містяться в результуючу множину Рис. 17. Етапи турнірного На наступних етапах знайдені мінімальні елементи містяться в результуючу множину Рис. 17. Етапи турнірного сортування

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

Даний тип сортування полягає в побудові пірамідального дерева, а саме бінарного дерева, що має Даний тип сортування полягає в побудові пірамідального дерева, а саме бінарного дерева, що має три властивості: • у вершині кожної тріади розташовується елемент з більшою вагою; • листя бінарного дерева розташовуються або на одному рівні, або на двох сусідніх (рис. 18); • листя нижнього рівня розташовуються лівіше листя більш високого рівня.

Рис. 18. Бінарне дерево: а - листя на одному рівні; б - листя на Рис. 18. Бінарне дерево: а - листя на одному рівні; б - листя на сусідніх рівнях

В ході перетворення елементи тріад порівнюються двічі, при цьому елемент з більшою вагою перейде В ході перетворення елементи тріад порівнюються двічі, при цьому елемент з більшою вагою перейде вгору, а з меншою вниз. Рис. 19. Порівняння елементів тріад: 1 - перше порівняння; 2 - друге порівняння

 • Приклад. Дано вихідну множину {2, 4, 6, 3, 5, 7}. В ході • Приклад. Дано вихідну множину {2, 4, 6, 3, 5, 7}. В ході сортування послідовно порівнюються елементи тріад. При цьому елемент з більшою вагою переміщається в корінь дерева. • Після завершення етапу сортування елемент, що знаходиться в корені дерева, поміщається на місце останнього елемента і надалі не розглядається. Метод пірамідального сортування зображений на рис. 20.

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

 Анімаційне порівняння алгоритмів сортування можна переглянути: http: //www. sorting-algorithms. com/ Анімаційне порівняння алгоритмів сортування можна переглянути: http: //www. sorting-algorithms. com/

ПИТАННЯ? ПИТАННЯ?

ДЯКУЮ ЗА УВАГУ!!! ДЯКУЮ ЗА УВАГУ!!!