Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4-10.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
51 Кб
Скачать
☆

5. Охарактеризуйте теоретичні аспекти та практичні підходи до реалізації наступних алгоритмів сортування даних у лінійних структурах: сортування вибіркою, методом Шелла

Сортування вибіркою: 1.    заповнити масив з n елементів 2.    організувати проходження вздовж масиву n-1 раз

2.1.    знайти мінімальний елемент масиву серед невідсортованої частини 2.2.    поміняти знайдений мінімальний елемент з першим елементом невідсортованої групи

3.    вивести отриманий массив

Метод Шелла

Ідея алгоритму полягає в обміні елементів, розташованих не тільки поряд, як в сортуванні методом вставок, але і далеко один від одного, що значно скорочує загальне число операцій переміщення елементів. Метод Шелла (Shell D.L., 1959) - метод сортування включеннями з відстанями, що зменшуються.

Алгоритм базується на двох тезах:

  • Сортування включенням ефективне для майже впорядкованих масивів.

  • Сортування включенням неефективне, тому що переміщує елемент тільки на одну позицію за раз.

Тому сортування Шелла виконує декілька впорядкувань включенням, кожен раз порівнюючи і переставляючи елементи, що розташовані на різній відстані один від одного.

Сортування Шелла не є стабільним.

Ідея алгоритму

На початку обираються m-елементів: , причому, .

Потім виконується m впорядкувань методом включення, спочатку для елементів, що стоять через , потім для елементів через і т. д. до .

Ефективність досягається тим, що кожне наступне впорядкування вимагає меншої кількості перестановок, оскільки деякі елементи вже стали на свої місця.

6. Охарактеризуйте теоретичні аспекти та практичні підходи до реалізації наступних алгоритмів сортування даних у лінійних структурах: обмінне сортування простою вибіркою, сортування Хоара.

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

Сортування Хоара

Швидке сортування (англ. Quick Sort) — алгоритм сортування, добре відомий, як алгоритм розроблений Чарльзом Хоаром, який не потребує додаткової пам'яті і виконує у середньому операцій. Однак, у найгіршому випадку робить порівнянь. Оскільки алгоритм використовує дуже прості цикли і операції, він працює швидше інших алгоритмів, що мають таку ж асимптотичну оцінку складності. Наприклад, зазвичай більш ніж удвічі швидший порівняно з сортуванням злиттям.

Ідея алгоритму полягає в переставлянні елементів масиву таким чином, щоб його можна було розділити на дві частини і кожний елемент з першої частини був не більший за будь-який елемент з другої. Впорядкування кожної з частин відбувається рекурсивно. Алгоритм швидкого сортування може бути реалізований як у масиві, так і в двозв’язному списку.

Швидке сортування є алгоритмом на основі порівнянь (англ.), і не є стабільним.

Основна стратегія прискорення алгоритмів сортування - обмін між якомога більш віддаленими елементами вихідного файлу.

Ідея К. Хоара полягає в наступному: на кожному кроці методу ми спочатку вибираємо "середній" елемент, потім переставляємо елементи масиву так, що він поділяється на три частини: спочатку ідуть елементи, менші "середнього", потім рівні йому, а в третій частині - більші. Після такого розподілу масиву залишається тільки відсортувати першу і третю його частини, з якими ми зробимо аналогічно (розділимо на три частини). І так доти, доки ці частини не будуть складатися з одного елемента, а масив з одного елемента завжди відсортований.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]