
- •Л.І. Маркова
- •1 Розв’язання задач з використанням методів пошуку
- •1.1 Мета роботи
- •1.2 Вказівки з підготовки до роботи
- •Лінійний пошук
- •З метою поліпшення можна прийти до питання, а чи потрібна перевірка
- •1.3 Варіанти індивідуальних завдань до лабораторної роботи 1
- •2.3 Варіанти індивідуальних завдань до лабораторної роботи 2
- •2.4 Контрольні запитання та завдання
- •3 Розв’язання задач з використанням алгоритмів сортування
- •3.1 Мета роботи
- •3.2 Підготовка до роботи
- •Бульбашкове сортування
- •4.3 Варіанти індивідуальних завдань до лабораторної роботи 4
- •6 Розв’язання задач у просторі станів
- •6.3 Варіанти індивідуальних завдань до лабораторної роботи 6
- •Початок // Begin
- •7.3 Варіанти індивідуальних завдань до лабораторної роботи 7
- •7.4 Контрольні запитання та завдання
- •"Теорія алгоритмів"
- •Віддруковано в учбово-виробничому видавничо-поліграфічному центрі хнуре
- •61166, , Харків, просп. Леніна, 14.
2.4 Контрольні запитання та завдання
Які задачі доцільно вирішувати з використанням рекурсії?
Визначте основні вимоги до алгоритму розв’язання задачі з використанням рекурсивних функцій.
Які основні операції визначають рекурсивний підхід до розв’язання задач?
Які обмеження накладає рекурсивний підхід до розв’язання задач?
3 Розв’язання задач з використанням алгоритмів сортування
3.1 Мета роботи
Вивчити й освоїти основні методи сортувань. Навчитися правильно вибирати методи сортувань у залежності від розподілів значень відсортованих даних.
3.2 Підготовка до роботи
Необхідно ознайомитися з основними методами сортувань [1, с. 150-164; 2, с. 110-114].
Сортування масивів (внутрішнє сортування) і сортування файлів (зовнішнє сортування).
Внутрішнє сортування – це таке сортування, при якому всі елементи сортованої послідовності вміщаються в оперативній пам'яті машини.
Зовнішнє сортування – це сортування, при якому елементи сортованої послідовності в оперативній пам'яті не містяться, і в деякий момент часу якась частина з них обов'язково знаходиться на зовнішньому носії (наприклад, у файлі).
Задача
сортування полягає в наступному: задана
деяка послідовність числових даних
.
Потрібно переставити елементи
послідовності таким чином, щоб одержати
упорядковану за деяким законом
послідовність
,
у якій для будь-якого 1<=i<=n
елемента виконується задане деякої
функції, що упорядковує f
відношеня
Наприклад,
Значення функції, що упорядковує, часто називають ключем елемента.
Метод сортування називають стійким, якщо в процесі сортування відносне розташування елементів з рівними ключами не змінюється. Наприклад, для послідовності 4567776 сортування закінчиться на 7 при
if ( a[i] <= a[i-1] )
while(is)
{ is=0;
for (i=m+1; i<=n; i++)
if ( a[i] <= a[i-1] )
{ c=a[i];
a[i]=a[i-1];
a[i-1]=c;
is=1;
}
Стійкість найбільш важлива, коли мова йде про вже упорядковані, по деяким вторинним ключам, послідовності.
Часто однією з умов сортування є вимога, щоб перестановки упорядковуючих елементів виконувалися на тім же місці, тобто не вимагали створення буферного масиву того ж порядку, що і вихідний.
Мірою ефективності алгоритмів сортування звичайно служать: C – число необхідних порівнянь ключів; M – число пересилань (перестановок) елементів.
Зазвичай
алгоритм вважається вдалим, якщо він
вимагає порядку
порівнянь (ускладнені методи), і невдалим,
якщо він вимагає
порівнянь ключів (прямі методи). Тут n
– число сортованих елементів.
Ускладнені методи вимагають невеликого числа операцій, але ці операції самі по собі складні, і тому при досить малих n прямі методи виявляються швидше.
Методи сортування "на тім же місці" поділяються на три категорії:
сортування вставками чи включенням;
сортування вибором;
сортування обміном.
Під час роботи зі списками нерідко виникає необхідність перестановки елементів списку у певному порядку. Така задача називається сортуванням списку, і для її розв’язання існують різні методи. Розглянемо деякі з них.