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

47)Загальні відомості про сортування. Швидке сортування.

Основними операціями, що виконуються над таблицями, є впорядкування (сортування) записів і пошук в таблиці запису по заданій умові( по ключу ). Сортування є операцією розстановки записів таблиці в певному порядку відповідно до деякого критерію впорядкування. Сортування здійснюється відповідно до значення ключів всіх записів (напр., впорядкування прізвищ за абеткою або чисел за збільшенням ). Існує достатньо багато методів сортування, що принципово відрізняються один від одного. Якщо таблиця цілком поміщається в оперативній пам'яті ЕОМ, то її впорядкування називають внутрішнім. Якщо для зберігання упорядковуваних даних використовуються зовнішній пристрій, що запам'ятовує, то таке впорядкування називають зовнішнім. Критеріями оцінки методів сортування є :

З - кількість операцій порівняння пар ключів,

Р - число перестановок елементів,

s - резерв пам'яті.

Середня кількість операцій порівняння залежить від методу сортування і при раціональному виборі методу досягає деякого мінімуму, залежного від n, - розміру таблиці ( розмір таблиці - кількість записів, що містяться в ній). Методи внутрішнього сортування можна розділити на дві групи:

- методи, що не вимагають резерву пам'яті;

- методи, що вимагають резерву пам'яті.

До першої групи відносяться такі методи, як метод вибірки, "бульбашки", вставки, Шелла. До другої групи відносяться метод квадратичної вибірки, метод злиття та інші. Прості методи сортування (вибором, обміном, вставкою) вимагають приблизно n**2 порівнянь. Складніші алгоритми зазвичай забезпечують отримання результату за n*log2(n) порівнянь в середньому: сортування методом Шелла, злиттям, "швидке сортування". Проте оптимального у будь-якому випадку сортування не існує, оскільки їх ефективність істотно залежить від типу ключів в таблиці і їх попередній впорядкованості.

Розглянемо алгоритми найбільш рараспространенних методів внутрішнього сортування ( впорядкування виконується за збільшенням значень ключа ).

Швидке сортування.

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

Сортування подфайлов, що містять менше ніж М елементів, виконується будь-яким простим методом, наприклад простими вставками. Таким чином, реалізація методу залежить від двох параметрів: значення М і способу вибору елемента, який призначений для розділення файлу на дві частини.

Блок вибору Х в найпростішому випадку формулюється як X = K [l], однак це може призвести до вкрай неефективного алгоритму. Найбільш просте краще рішення - вибирати Х як випадковий ключ з діапазону K [l] ... K [r] і обміняти його з K [l].

Час роботи алгоритму t приблизно оцінюється формулою:

t = a * N * logN + b * N

де a, b - невідомі константи, що залежать від програмної реалізації алгоритму.

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