Скачать презентацию ПОРОЗРЯДНЕ СОРТУВАННЯ Виконали студенти групи КІ-11 -1 Навізовський Скачать презентацию ПОРОЗРЯДНЕ СОРТУВАННЯ Виконали студенти групи КІ-11 -1 Навізовський

radix-sort-5425 (2).pptx

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

ПОРОЗРЯДНЕ СОРТУВАННЯ Виконали: студенти групи КІ-11 -1 Навізовський Юрій і Когут Іван ПОРОЗРЯДНЕ СОРТУВАННЯ Виконали: студенти групи КІ-11 -1 Навізовський Юрій і Когут Іван

ПЛАН Характеристика алгоритму Розкриття алгоритму Графічне представлення алгоритму Приклад програми Висновок ПЛАН Характеристика алгоритму Розкриття алгоритму Графічне представлення алгоритму Приклад програми Висновок

ХАРАКТЕРИСТИКА АЛГОРИТМУ Порозрядне сортування (англ. Radix Sort) — алгоритм сортування, який походить ще від ХАРАКТЕРИСТИКА АЛГОРИТМУ Порозрядне сортування (англ. Radix Sort) — алгоритм сортування, який походить ще від 1887 року, розроблений Германом Голерітом, виконує у середньому O(n log n) операцій. Ефективність порозрядного сортування. Судячи з оцінки, порозрядне сортування зростає лінійно. Також воно зростає лінійним чином при збільшенні довжини типу (кількості розрядів) відповідно зростає кількість проходів. Порозрядне сортування по своїй суті нецікаве для малих масивів. Кожний прохід містить мінімум 256 ітерацій, тому при невеликій кількості елементів масиву загальний час виконання визначається константою. Поведінка неприродна, оскільки проходи виконуються повністю, незалежно від початкового стану масиву. Порозрядне сортування є стійким.

РОЗКРИТТЯ АЛГОРИТМУ Створюємо допоміжні списки(кишені), їх кількість залежить від системи числення(наприклад якщо числа записані РОЗКРИТТЯ АЛГОРИТМУ Створюємо допоміжні списки(кишені), їх кількість залежить від системи числення(наприклад якщо числа записані у десятковій системі числення, то їх кількість буде 10(L 0, L 1. . . , L 9), для вісімкової – 8 і т. д. ). Спочатку ці списки будуть порожніми. Далі йде розподіл елементів у списки. Відбувається це таким чином: елемент потрапляє в список під таким номером, якою є цифра в його останньому розряді(напр. число 123 при першому проході потрапить до 3 -го списку). Потім ці всі списки об’єднуються послідовно. L = L 0 => L 1 => L 2 =>. . . => L 9. Після цього знов проводиться така сама процедура – йде розподіл елементів у списки, але вже не за останнім розрядом, а за передостаннім. Тривалість цієї процедури буде залежати від кількості розрядів максимального елемента. Після n-го проходу отримаємо відсортований масив чисел

Розглянемо порозрядне сортування на прикладі такого масиву чисел: 64 8 216 512 27 729 Розглянемо порозрядне сортування на прикладі такого масиву чисел: 64 8 216 512 27 729 0 1 343 125

ПЕРШИЙ ПРОХІД ПЕРШИЙ ПРОХІД

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9

64 0 1 2 3 4 5 6 7 8 9 8 216 512 64 0 1 2 3 4 5 6 7 8 9 8 216 512 27 729 0 1 343 125

64 0 1 2 3 4 5 6 7 8 9 8 216 512 64 0 1 2 3 4 5 6 7 8 9 8 216 512 27 729 0 1 343 125

64 0 1 2 3 4 5 6 7 8 9 64 8 216 64 0 1 2 3 4 5 6 7 8 9 64 8 216 512 27 729 0 1 343 125

64 0 1 2 3 4 5 6 7 8 9 64 8 216 64 0 1 2 3 4 5 6 7 8 9 64 8 216 512 27 729 0 1 343 125

64 0 1 2 3 4 64 5 6 7 8 9 8 8 64 0 1 2 3 4 64 5 6 7 8 9 8 8 216 512 27 729 0 1 343 125

64 0 1 2 3 4 64 5 6 7 8 9 8 8 64 0 1 2 3 4 64 5 6 7 8 9 8 8 216 512 27 729 0 1 343 125

64 0 1 2 3 4 64 5 6 216 7 8 9 8 64 0 1 2 3 4 64 5 6 216 7 8 9 8 8 216 512 27 729 0 1 343 125

64 0 1 2 3 4 64 5 6 216 7 8 9 8 64 0 1 2 3 4 64 5 6 216 7 8 9 8 8 216 512 27 729 0 1 343 125

64 0 1 2 512 3 4 64 5 6 216 7 8 9 64 0 1 2 512 3 4 64 5 6 216 7 8 9 8 8 216 512 27 729 0 1 343 125

64 0 1 2 512 3 4 64 5 6 216 7 8 9 64 0 1 2 512 3 4 64 5 6 216 7 8 9 8 8 216 512 27 729 0 1 343 125

64 0 1 2 512 3 4 64 5 6 216 7 27 8 64 0 1 2 512 3 4 64 5 6 216 7 27 8 8 9 8 216 512 27 729 0 1 343 125

64 0 1 2 512 3 4 64 5 6 216 7 27 8 64 0 1 2 512 3 4 64 5 6 216 7 27 8 8 9 8 216 512 27 729 0 1 343 125

64 0 1 2 512 3 4 64 5 6 216 7 27 8 64 0 1 2 512 3 4 64 5 6 216 7 27 8 8 9 729 8 216 512 27 729 0 1 343 125

64 0 1 2 512 3 4 64 5 6 216 7 27 8 64 0 1 2 512 3 4 64 5 6 216 7 27 8 8 9 729 8 216 512 27 729 0 1 343 125

64 0 0 1 2 512 3 4 64 5 6 216 7 27 64 0 0 1 2 512 3 4 64 5 6 216 7 27 8 8 9 729 8 216 512 27 729 0 1 343 125

64 0 0 1 2 512 3 4 64 5 6 216 7 27 64 0 0 1 2 512 3 4 64 5 6 216 7 27 8 8 9 729 8 216 512 27 729 0 1 343 125

64 0 0 1 1 2 512 3 4 64 5 6 216 7 64 0 0 1 1 2 512 3 4 64 5 6 216 7 27 8 8 9 729 8 216 512 27 729 0 1 343 125

64 0 0 1 1 2 512 3 4 64 5 6 216 7 64 0 0 1 1 2 512 3 4 64 5 6 216 7 27 8 8 9 729 8 216 512 27 729 0 1 343 125

64 0 0 1 1 2 512 3 343 4 64 5 6 216 64 0 0 1 1 2 512 3 343 4 64 5 6 216 7 27 8 8 9 729 8 216 512 27 729 0 1 343 125

64 0 0 1 1 2 512 3 343 4 64 5 6 216 64 0 0 1 1 2 512 3 343 4 64 5 6 216 7 27 8 8 9 729 8 216 512 27 729 0 1 343 125

64 0 0 1 1 2 512 3 343 4 64 5 125 6 64 0 0 1 1 2 512 3 343 4 64 5 125 6 216 7 27 8 8 9 729 8 216 512 27 729 0 1 343 125

64 0 0 1 1 2 512 3 343 4 64 5 125 6 64 0 0 1 1 2 512 3 343 4 64 5 125 6 216 7 27 8 8 9 729 8 216 512 27 729 0 1 343 125

0 0 1 1 2 512 3 343 4 64 5 125 6 216 0 0 1 1 2 512 3 343 4 64 5 125 6 216 7 27 8 8 9 729

0 0 1 1 2 512 3 343 4 64 5 125 6 216 0 0 1 1 2 512 3 343 4 64 5 125 6 216 7 27 8 8 9 729

0 0 0 1 1 2 512 3 343 4 64 5 125 6 0 0 0 1 1 2 512 3 343 4 64 5 125 6 216 7 27 8 8 9 729

0 0 1 1 2 512 3 343 4 64 5 125 6 216 0 0 1 1 2 512 3 343 4 64 5 125 6 216 7 27 8 8 9 729

0 0 1 1 2 512 3 343 4 64 5 125 6 216 0 0 1 1 2 512 3 343 4 64 5 125 6 216 7 27 8 8 9 729

0 0 1 1 2 512 3 343 4 64 5 125 6 216 0 0 1 1 2 512 3 343 4 64 5 125 6 216 7 27 8 8 9 729 1

0 0 1 2 512 3 343 4 64 5 125 6 216 7 0 0 1 2 512 3 343 4 64 5 125 6 216 7 27 8 8 9 729 1

0 0 1 2 512 3 343 4 64 5 125 6 216 7 0 0 1 2 512 3 343 4 64 5 125 6 216 7 27 8 8 9 729 1 512

0 0 1 2 3 343 4 64 5 125 6 216 7 27 0 0 1 2 3 343 4 64 5 125 6 216 7 27 8 8 9 729 1 512

ДРУГИЙ ПРОХІД ДРУГИЙ ПРОХІД

0 0 1 2 3 4 5 6 7 8 9 1 512 343 0 0 1 2 3 4 5 6 7 8 9 1 512 343 64 125 216 27 8 729

00 1 512 343 64 125 216 27 0 1 2 3 4 5 00 1 512 343 64 125 216 27 0 1 2 3 4 5 6 7 8 9 8 729

0 0 1 2 3 4 5 6 7 8 9 0 1 512 0 0 1 2 3 4 5 6 7 8 9 0 1 512 343 64 125 216 27 8 729

0 0 1 2 3 4 5 6 7 8 9 0 01 512 0 0 1 2 3 4 5 6 7 8 9 0 01 512 343 64 125 216 27 8 729

0 0 1 2 3 4 5 6 7 8 9 0 1 1 0 0 1 2 3 4 5 6 7 8 9 0 1 1 512 343 64 125 216 27 8 729

0 0 1 2 3 4 5 6 7 8 9 0 1 1 0 0 1 2 3 4 5 6 7 8 9 0 1 1 512 343 64 125 216 27 8 729

0 0 0 1 512 2 3 4 5 6 7 8 9 1 0 0 0 1 512 2 3 4 5 6 7 8 9 1 1 512 343 64 125 216 27 8 729

0 0 0 1 512 2 3 4 5 6 7 8 9 1 0 0 0 1 512 2 3 4 5 6 7 8 9 1 1 512 343 64 125 216 27 8 729

0 0 0 1 512 2 3 4 5 6 7 8 9 343 0 0 0 1 512 2 3 4 5 6 7 8 9 343 1 1 512 343 64 125 216 27 8 729

0 0 0 1 512 2 3 4 5 6 7 8 9 343 0 0 0 1 512 2 3 4 5 6 7 8 9 343 1 1 512 343 64 125 216 27 8 729

0 0 0 1 512 2 3 4 343 5 6 7 8 9 0 0 0 1 512 2 3 4 343 5 6 7 8 9 64 1 1 512 343 64 125 216 27 8 729

0 0 0 1 512 2 3 4 343 5 6 7 8 9 0 0 0 1 512 2 3 4 343 5 6 7 8 9 64 1 1 512 343 64 125 216 27 8 729

0 0 0 1 512 2 125 3 4 343 5 6 7 8 0 0 0 1 512 2 125 3 4 343 5 6 7 8 9 64 1 1 512 343 64 125 216 27 8 729

0 0 0 1 512 2 125 3 4 343 5 6 7 8 0 0 0 1 512 2 125 3 4 343 5 6 7 8 9 64 1 1 512 343 64 125 216 27 8 729

0 0 0 1 1 512 216 2 125 3 4 343 5 6 0 0 0 1 1 512 216 2 125 3 4 343 5 6 7 8 9 64 1 512 343 64 125 216 27 8 729

0 0 0 1 1 512 216 2 125 3 4 343 5 6 0 0 0 1 1 512 216 2 125 3 4 343 5 6 7 8 9 64 1 512 343 64 125 216 27 8 729

0 0 0 1 1 512 216 2 125 27 3 4 343 5 0 0 0 1 1 512 216 2 125 27 3 4 343 5 6 7 8 9 64 1 512 343 64 125 216 27 8 729

0 0 0 1 1 512 216 2 125 27 3 4 343 5 0 0 0 1 1 512 216 2 125 27 3 4 343 5 6 7 8 9 64 1 512 343 64 125 216 27 08 729

0 0 0 1 1 512 216 2 125 27 3 4 343 5 0 0 0 1 1 512 216 2 125 27 3 4 343 5 6 7 8 9 64 8 1 512 343 64 125 216 27 8 729

0 0 0 1 1 512 216 2 125 27 3 4 343 5 0 0 0 1 1 512 216 2 125 27 3 4 343 5 6 7 8 9 64 8 1 512 343 64 125 216 27 8 729

0 0 0 1 1 512 216 2 125 27 3 4 343 5 0 0 0 1 1 512 216 2 125 27 3 4 343 5 6 7 8 9 64 8 729 1 512 343 64 125 216 27 8 729

0 0 0 1 1 512 216 2 125 27 3 4 343 5 0 0 0 1 1 512 216 2 125 27 3 4 343 5 6 7 8 9 64 8 729 1 512 343 64 125 216 27 8 729

0 0 1 1 512 216 2 125 27 3 4 343 5 6 0 0 1 1 512 216 2 125 27 3 4 343 5 6 7 8 9 64 8 729

0 0 0 1 1 512 216 2 125 27 3 4 343 5 0 0 0 1 1 512 216 2 125 27 3 4 343 5 6 7 8 9 64 8 729 1 8

0 0 1 512 216 2 125 27 3 4 343 5 6 7 0 0 1 512 216 2 125 27 3 4 343 5 6 7 8 9 64 729 1 8

0 0 1 512 216 2 125 27 3 4 343 5 6 7 0 0 1 512 216 2 125 27 3 4 343 5 6 7 8 9 64 729 1 8 512 216

0 0 1 2 125 3 4 343 5 6 7 8 9 64 0 0 1 2 125 3 4 343 5 6 7 8 9 64 27 729 1 8 512 216

0 0 1 2 125 3 4 343 5 6 7 8 9 64 0 0 1 2 125 3 4 343 5 6 7 8 9 64 27 729 1 8 512 216 125 27 729

0 0 1 2 3 4 343 5 6 7 8 9 64 1 0 0 1 2 3 4 343 5 6 7 8 9 64 1 8 512 216 125 27 729

0 0 1 2 3 4 343 5 6 7 8 9 64 1 0 0 1 2 3 4 343 5 6 7 8 9 64 1 8 512 216 125 27 729 343

0 0 1 2 3 4 5 6 7 8 9 64 1 8 0 0 1 2 3 4 5 6 7 8 9 64 1 8 512 216 125 27 729 343

0 0 1 2 3 4 5 6 7 8 9 64 1 8 0 0 1 2 3 4 5 6 7 8 9 64 1 8 512 216 125 27 729 343 64

ТРЕТІЙ ПРОХІД ТРЕТІЙ ПРОХІД

0 0 1 2 3 4 5 6 7 8 9 1 8 512 0 0 1 2 3 4 5 6 7 8 9 1 8 512 216 125 27 729 343 64

000 1 2 3 4 5 6 7 8 9 8 512 216 125 000 1 2 3 4 5 6 7 8 9 8 512 216 125 27 729 343 64

0 0 1 2 3 4 5 6 7 8 9 0 1 8 0 0 1 2 3 4 5 6 7 8 9 0 1 8 512 216 125 27 729 343 64

0 001 8 512 216 125 27 729 343 64 0 1 2 3 0 001 8 512 216 125 27 729 343 64 0 1 2 3 4 5 6 7 8 9 0

0 0 1 2 3 4 5 6 7 8 9 0 1 1 0 0 1 2 3 4 5 6 7 8 9 0 1 1 8 512 216 125 27 729 343 64

0 0 1 2 3 4 5 6 7 8 9 0 1 1 0 0 1 2 3 4 5 6 7 8 9 0 1 1 008 512 216 125 27 729 343 64

0 0 1 2 3 4 5 6 7 8 9 0 1 8 0 0 1 2 3 4 5 6 7 8 9 0 1 8 512 216 125 27 729 343 64

0 0 1 2 3 4 5 6 7 8 9 0 1 8 0 0 1 2 3 4 5 6 7 8 9 0 1 8 512 216 125 27 729 343 64

0 0 0 1 2 3 4 5 6 7 8 9 512 1 0 0 0 1 2 3 4 5 6 7 8 9 512 1 8 512 216 125 27 729 343 64

0 0 0 1 2 3 4 5 6 7 8 9 512 1 0 0 0 1 2 3 4 5 6 7 8 9 512 1 8 512 216 125 27 729 343 64

0 0 0 1 2 216 3 4 5 6 7 8 9 512 0 0 0 1 2 216 3 4 5 6 7 8 9 512 1 8 512 216 125 27 729 343 64

0 0 0 1 2 216 3 4 5 6 7 8 9 512 0 0 0 1 2 216 3 4 5 6 7 8 9 512 1 8 512 216 125 27 729 343 64

0 0 0 1 125 2 216 3 4 5 6 7 8 9 0 0 0 1 125 2 216 3 4 5 6 7 8 9 512 1 8 512 216 125 27 729 343 64

0 0 0 1 125 2 216 3 4 5 6 7 8 9 0 0 0 1 125 2 216 3 4 5 6 7 8 9 512 1 8 512 216 125 027 729 343 64

0 0 0 1 125 2 216 3 4 5 6 7 8 9 0 0 0 1 125 2 216 3 4 5 6 7 8 9 512 1 8 1 27 8 512 216 125 27 729 343 64

0 0 0 1 125 2 216 3 4 5 6 7 8 9 0 0 0 1 125 2 216 3 4 5 6 7 8 9 512 1 8 1 27 8 512 216 125 27 729 343 64

0 0 0 1 125 2 216 3 4 5 512 6 7 8 0 0 0 1 125 2 216 3 4 5 512 6 7 8 9 729 1 8 1 27 8 512 216 125 27 729 343 64

0 0 0 1 125 2 216 3 4 5 512 6 7 8 0 0 0 1 125 2 216 3 4 5 512 6 7 8 9 729 1 8 1 27 8 512 216 125 27 729 343 64

0 0 0 1 125 2 216 3 343 4 5 512 6 7 0 0 0 1 125 2 216 3 343 4 5 512 6 7 8 9 729 1 8 1 27 8 512 216 125 27 729 343 64

0 0 0 1 125 2 216 3 343 4 5 512 6 7 0 0 0 1 125 2 216 3 343 4 5 512 6 7 8 9 729 1 8 1 27 8 512 216 125 27 729 343 064

0 0 0 1 125 2 216 3 343 4 5 512 6 7 0 0 0 1 125 2 216 3 343 4 5 512 6 7 8 9 729 1 8 1 27 8 512 216 125 27 729 343 64 64

0 0 0 1 125 2 216 3 343 4 5 512 6 7 0 0 0 1 125 2 216 3 343 4 5 512 6 7 8 9 729 1 8 1 27 8 512 216 125 27 729 343 64 64

0 0 1 125 2 216 3 343 4 5 512 6 7 8 0 0 1 125 2 216 3 343 4 5 512 6 7 8 9 729 1 8 27 64

0 0 0 1 125 2 216 3 343 4 5 512 6 7 0 0 0 1 125 2 216 3 343 4 5 512 6 7 8 9 729 1 8 1 27 8 27 64 64

0 0 1 125 2 216 3 343 4 5 512 6 7 8 0 0 1 125 2 216 3 343 4 5 512 6 7 8 9 729 1 8 27 64

0 0 1 125 2 216 3 343 4 5 512 6 7 8 0 0 1 125 2 216 3 343 4 5 512 6 7 8 9 729 1 8 27 64 125

0 0 1 2 216 3 343 4 5 512 6 7 8 9 0 0 1 2 216 3 343 4 5 512 6 7 8 9 729 1 8 27 64 125

0 0 1 2 216 3 343 4 5 512 6 7 8 9 0 0 1 2 216 3 343 4 5 512 6 7 8 9 729 1 8 27 64 125 216

0 0 1 2 3 343 4 5 512 6 7 8 9 729 0 0 1 2 3 343 4 5 512 6 7 8 9 729 1 8 27 64 125 216

0 0 1 2 3 343 4 5 512 6 7 8 9 729 0 0 1 2 3 343 4 5 512 6 7 8 9 729 1 8 27 64 125 216 343

0 0 1 2 3 4 5 512 6 7 8 9 729 1 0 0 1 2 3 4 5 512 6 7 8 9 729 1 8 27 64 125 216 343

0 0 1 2 3 4 5 512 6 7 8 9 729 1 0 0 1 2 3 4 5 512 6 7 8 9 729 1 8 27 64 125 216 343 512

0 0 1 2 3 4 5 6 7 8 9 729 1 8 0 0 1 2 3 4 5 6 7 8 9 729 1 8 27 64 125 216 343 512

0 0 1 2 3 4 5 6 7 8 9 729 1 8 0 0 1 2 3 4 5 6 7 8 9 729 1 8 27 64 125 216 343 512 729

0 0 1 2 3 4 5 6 7 8 9 1 8 27 0 0 1 2 3 4 5 6 7 8 9 1 8 27 64 125 216 343 512 729

БЛОК-СХЕМА 1 1 2 Оголошення i, n, arr 3 4 Вхід Початок Ввід елементів БЛОК-СХЕМА 1 1 2 Оголошення i, n, arr 3 4 Вхід Початок Ввід елементів radixsort(&arr[0], n) 5 Ввід відсортованог о масиву 6 Кінець 2 i=0; i

Вхід Оголошення b, m, exp i=left; j=right; x=mas[(left+right)/2]; (i = 0; i < n; Вхід Оголошення b, m, exp i=left; j=right; x=mas[(left+right)/2]; (i = 0; i < n; i++) - a[i] > + m m = a[i] while (m / exp > 0) i = 0; i < n; i++ 5 4 bucket[a[i] / exp % 10]++; i = 1; i < 10; i++ 5 4 bucket[i] += bucket[i 1]; i = n - 1; i >= 0; i-- 5 4 b[--bucket[a[i] / exp % 10]] = a[i]; i = 0; i < n; i++ 5 4 a[i] = b[i]; exp *= 10; Вихід

#include <stdio. h> #include<conio. h> #define MAX 10 #define SHOWPASS void print(int *a, int #include #include #define MAX 10 #define SHOWPASS void print(int *a, int n) {int i; for (i = 0; i < n; i++) printf("%dt", a[i]); } void radixsort(int *a, int n) {int i, b[MAX], m = 0, exp = 1; for (i = 0; i < n; i++) {if (a[i] > m) m = a[i]; } while (m / exp > 0) { int bucket[10] = {0}; for (i = 0; i < n; i++) bucket[a[i] / exp % 10]++; for (i = 1; i < 10; i++) bucket[i] += bucket[i - 1]; for (i = n - 1; i >= 0; i--) b[--bucket[a[i] / exp % 10]] = a[i]; for (i = 0; i < n; i++) a[i] = b[i]; exp *= 10; #ifdef SHOWPASS printf("n. PASS : "); print(a, n); #endif}}

int main() { int arr[MAX]; int i, n; clrscr(); printf(

РЕЗУЛЬТАТ ВИКОНАННЯ ПРОГРАМИ РЕЗУЛЬТАТ ВИКОНАННЯ ПРОГРАМИ

ВИСНОВОК Цей алгоритм є досить складним в реалізації. Його доцільно використовувати прии великій кількості ВИСНОВОК Цей алгоритм є досить складним в реалізації. Його доцільно використовувати прии великій кількості сортованих даних.

КІНЕЦЬ КІНЕЦЬ