Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора_экз.docx
Скачиваний:
2
Добавлен:
31.07.2019
Размер:
42.24 Кб
Скачать

Алгоритм сортування методом Хоара.

Удосконаливши метод сортування, який грунтується на обмінах, К. Хоар запропонував алгоритм QuickSort сортування масивів, що дає на практиці відмінні результати і дуже просто програмується. Автор назвав свій алгоритм швидким сортуванням. Ідея К. Хоара полягає в наступному: 1 Виберемо деякий елемент x масиву A випадковим образом; 2.Переглядаємо масив у прямому напрямку (i = 1, 2,...), шукаючи в ньому елемент A[i] не менший за x; 3.Переглядаємо масив у зворотньому напрямку (j = n, n-1,..), шукаючи в ньому елемент A[j] не більший за x; 4.Змінюємо місцями A[i] і A[j]; Пункти 2-4 повторюємо доти, поки i < j; У результаті такого зустрічного проходу початок масиву A[1..i] і кінець масиву A[j..n] виявляються розділеними “бар'єром” x: A[k] ( x при k < i, A[k] ( x при k > j , причому на поділ ми затратимо не більш n/2 перестановок. Тепер залишилося проробити ті ж дії з початком і кінцем масиву, тобто застосувати їх рекурсивно. Таким чином, описана нами процедура Hoare залежить від параметрів k та m - початкового і кінцевого індексів відрізка масиву, який обробляється. Аналіз складності алгоритму в середньому, що використовує гіпотезу про рівну імовірність усіх входів, показує, що: C(n) = O(n log2 n), M(n) = O(n log2 n) У гіршому випадку, коли в якості бар'єрного вибирається, наприклад, максимальний елемент підмасиву, складність алгоритму квадратична.

Алгоритм сортування пірамідальним методом.

Пірамідальне сортування (Heap sort) базується на структурі даних, названій купою. Працює за O(n*log(n)). Загалом повільніше ніж швидке, але зате n*log(n) - найгірша оцінка.

Складається з двох фаз:

  1. Побудова і балансування піраміди.

  2. Сортування.

Піраміда – бінарне дерево. Бінарне дерево – це дерево, де кожен предок має не більше двох нащадків.

Для виконання першої фази ми повинні a(2i+1)>=a(2i+2) при і 0%n. Якщо виконується дана умова, то дерево збалансоване.

Нумерація по рівнях зліва направо.

  1. Починаємо балансування по рівнях зверху вниз, зліва направо.

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

  3. Перший та останній змінюємо місцями і продовжуємо балансувати.

----------------------------------------------------

Алгоритм сортування порозрядним методом.

Цей алгоритм істотно відрізняється від інших. Не використовується порівняння елементів послідовності. Елементи для сортування розділяються на частини. Складається з двох фаз: рознесення та з’єднання.

Для того, щоб відсортувати дані необхідно: k – кількість розрядів у самого довгого елемента(кількість повторень), m – кількість можливих значень. Використовується для динамічних структур. Розглядаються елементи з молодшого розряду. O(n*log(n)). Стійкий, швидкий, неприродне.

----------------------------------------------------

Алгоритми пошуку інформації.

Звичайний пошук: пошук відбувається по кожному елементу.

Бінарний пошук: Двійковий пошук - дуже потужний метод. . Змінні Lb і Ub містять, відповідно, ліву та праву межі відрізка масиву, де знаходиться потрібний нам елемент. Ми починаємо завжди з дослідження середнього елемента відрізка. Якщо шукане значення менше середнього елементу, ми переходимо до пошуку у верхній половині відрізка, де всі елементи менше щойно перевіреного. Іншими словами, значенням Ub стає (M - 1) і на наступній ітерації ми працюємо з половиною масиву. Таким чином, у результаті кожної перевірки ми вдвічі звужуємо область пошуку, доки не буде знайдено необхідне число, або підтверджено, що його не існує.

----------------------------------------------------