Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаТ Алгор2012.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
472.06 Кб
Скачать

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

Сортування – це процес перегрупування заданої множини об’єктів у визначеній черзі (зростання або убування). Множиною для сортування мають бути елементи масивів або записи файлів. Кожен запис має поле ключа та поле інформації:

struct node

{ float num //ключове поле

//інформаційні поля

}

Записи впорядковуються за значенням ключа.

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

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

Алгоритм

Вхід: масив сортованих елементів А.

Вихід: відсортований масив А.

Крок 1.1) Вибрати навмання елемент х одним з способів:

за допомогою генератора випадкових чисел;

2) х = А[i] = А[ (1+n)/2 ] (медіана).

Крок 2. Переглядати масив ліворуч, доки не знайдеться елемент А[і] > х.

Крок 3. Переглядати масив праворуч, доки не знайдеться елемент А[і] < х.

Крок 4. Поміняти місцями А[i] та А[j].

Крок 5. Продовжити процес перегляду та обміну (кроки 1-4), доки вони не зустрінуться (i = j). Результат: масив поділено на ліву частину, де всі елементи менші за х та праву, де всі елементи не менші за х.

Крок 6. Застосувати кроки 1-5 до кожної з одержаних частин, доки в кожній з частин не залишиться по одному елементу.

Сортування деревом (HeapSort)

Алгоритм

Вхід: масив елементів (вузлів) сортування А, де А [1] – елемент у корені.

Вихід: елементи масиву А, організовані у вигляді сортуючого дерева, тобто:

A[i]<=A[n/2] , 1< i <n.

Крок 1. Вузли дерева помітити елементами масиву, який треба відсортувати.

Крок 2. Міняти розміщення елементів (вузлів), доки кожен вузол стане не меншим за його нащадків. Таке дерево називають сортуючим.

Крок 3.Найбільший елемент, який відповідає кореню дерева, видаляється, а в корінь переноситься елемент самого останнього листа. Перехід до кроку 2. Якщо на дереві залишився тільки один елемент, то перехід до кроку 4.

Крок 4. Результатом є послідовність елементів, видалених з сортуючого дерева, впорядкована по убуванню.

Cортування Шелла (ShellSort)

Алгоритм

Крок 1. Масив з n елементів А розбити на k груп по 2 елементи в кожній таким чином, щоб елементи кожної групи розташувались на відстані d один від одного. d-крок групи, повинен бути ступенем двох (або d n/2).

Крок 2. Відсортувати елементи в кожній з груп, наприклад методом пузиркового включення.

Крок 3. k і d зменшують удвічі. Перейти до кроку 2. Якщо d дорівнює 1, перейти до кроку 2 і потім завершити сортування.

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

Алгоритм. (Сортування методом «розподіляй і володій»).

Крок 1. Масив елементів А розбити на 2 частини В і С.

Крок 2. Частини В і С зливаються, при цьому одиночні елементи утворюють упорядковані пари.

Крок 3. Перейти до кроку 1, при цьому упорядковані пари переходять у такі ж четвірки.

Крок 4. Повторюючи кроки 1-2, зливаємо четвірки в вісімки і так далі, доки не буде упорядкований весь масив А.

Пухирцеве включення (BubbleInsertion)

В сортуванні включенням кожен елемент почергово порівнюється з попередніми і шукається місце включення цього елемента.

Алгоритм

Пухирцеве спливання (BubbleSort)

В сортуванні «пухирцем» послідовно порівнюються елементи, що стоять поруч, і в разі необхідності обмінюються місцями. Таким чином, поступово найбільші за значенням елементи «спливають» у кінці масиву.

Алгоритм