Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора комбінаторні методи (Питання).doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.42 Mб
Скачать

17. Алгоритми впорядкування списку. Обчислювальна та ємнісна складність алгоритму.

Алгоритм сортування - це алгоритм для впорядкування елементів у списку. У випадку, коли елемент списку має кілька полів, поле, що служить критерієм порядку, називається ключем сортування. На практиці в якості ключа часто виступає число, а в інших полях зберігаються будь-які дані, ніяк що не впливають на роботу алгоритму.

Для типових алгоритмів в середньому обчислювальна складність O(n*log n), а в найгіршому – O(n2). Щодо пам'яті, то, зазвичай, необхідно O(log n) пам'яті.

Характеристики алгоритмів сортування:

  • Стійкість – стійке сортування не змінює взаємного розташування елементів з однаковими ключами;

  • Природність поведінки – ефективність методу при обробці вже впорядкованих або частково впорядкованих даних. Алгоритм поводиться природно, якщо враховує цю характеристику вхідної послідовності і працює краще.

  • Використання операції порівняння. Алгоритми, що використовують для сортування порівняння елементів між собою, називаються заснованими на порівняннях. Мінімальна трудомісткість гіршого випадку для цих алгоритмів становить O (n log n), але вони відрізняються гнучкістю застосування. Для спеціальних випадків (типів даних) існують більш ефективні алгоритми.

Алгоритм сортування вибіркою (Selection Sort)

Може бути як стійким, так і не стійким.

Кроки виконання алгоритму:

1) знаходимо номер мінімального значення в поточному списку;

2) проводимо обмін цього значення зі значенням першої невідсортованої позиції (обмін не потрібен, якщо мінімальний елемент вже знаходиться на даній позиції);

3) тепер сортуємо хвіст списку, виключивши з розгляду вже відсортовані елементи.

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

Обчислювальна складність алгоритму: O(n2).

Ємнісна складність: O(1).

Алгоритм сортування бульбашкою (Bubble Sort)

Алгоритм працює таким чином — у поданому наборі даних (списку чи масиві) порівнюються два сусідні елементи. Якщо один з елементів, не відповідає критерію сортування (є більшим, або ж, навпаки, меншим за свого сусіда), то ці два елементи міняються місцями. Прохід по списку продовжується до тих пір, доки дані не будуть відсортованими. Алгоритм отримав свою назву від того, що процес сортування за ним нагадує поведінку бульбашок повітря у резервуарі з водою.

Обчислювальна складність: O(n2).

Ємнісна складність: додаткових затрат пам'яті немає.

Алгоритм вставки або включення (Insertion Sort)

На кожному кроці алгоритму ми вибираємо один з елементів вхідних даних і вставляємо його на потрібну позицію у вже відсортованому списку, до тих пір, поки набір вхідних даних не буде вичерпано. Метод вибору чергового елемента з вихідного масиву довільний; може використовуватися практично будь-який алгоритм вибору. Зазвичай (і з метою отримання стійкого алгоритму сортування), елементи вставляються по порядку їх появи у вхідному масиві.

Обчислювальна складність алгоритму: O(n2)

Ємнісна складність: O(1).