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

I, j, MinInd : Integer;

b : Data;

Begin

For i := 1 to n - 1 do begin

MinInd := i;

For j := i + 1 to n do

If a[j] < a[MinInd]

then MinInd := j;

b := a[MinInd];

a[MinInd] := a[i];

a[i] := b

end;

End.

Аналіз алгоритму сортування вибором

Внутрішній цикл здійснює пошук мінімального елемента. Після виконання оператора розгалуження If має місце співвідношення

Min = Min(a[i], a[i+1], ... , a[j]),

а після завершення циклу

Min = Min(a[i], a[i+1], ... , a[n]).

Після перестановки маємо: a[i] = Min(a[i], a[i+1], ... , a[n]).

Зовнішній цикл керує довжиною частини масиву, що переглядається. Після виконання тіла зовнішнього циклу початок масиву відсортований:

a[1] ≤ a[2] ≤ .. ≤ a[i].

Після завершення зовнішнього циклу одержуємо:

a[1] ≤ a[2] ≤ ... ≤ a[n-1], a[n-1] = Min(a[n-1], a[n]),

тобто масив відсортований.

Зовнішній цикл виконується n-1 раз. Внутрішній цикл виконується і-1 раз (і = n-1, n-2, ...,1). Кожне виконання тіла внутрішнього циклу полягає в одному порівнянні. Тому C(n) = 1 + 2 + ... + n - 1 = n(n - 1)/2.

Перестановка елементів здійснюється в зовнішньому циклі. Тому M(n) = 3(n - 1).

Так само, як і алгоритм сортування обмінами, аналізований алгоритм стійкий. Можна зробити висновок, що просте сортування вибором більш ефективне ніж сортування простими обмінами за критерієм M(n) (кількість перестановок). Якщо послідовність, яку слід упорядкувати, складається з даних великого розміру, цей критерій може мати вирішальне значення.

Завдання 1 (на «задовільно»)

Розробити блок-схему алгоритму та за допомогою пакету MS Visual Studio створити консольну програму, яка здійснює сортування елементів масиву цілих методом обміну.

Програма повинна надати можливість користувачу задати розмір масиву, ввести елементи масиву та вивести відсортований масив на екран.

Звіт має містити:

1. Словесний опис алгоритму

2. Блок-схему алгоритму

3. Код програми (програма має виводити на екран групу та ПІБ студента, який її розробив, а також результат розрахунку)

4. Перевірка виконання на тестових даних і результат роботи програми у вигляді копії екрану

Завдання 2 (на «добре», передбачає виконання попереднього завдання)

Доповнити попередню програму методом сортування вибором.

Програма повинна надати можливість користувачу задати розмір масиву, ввести елементи масиву, обрати алгоритм сортування та вивести відсортований масив на екран.

Звіт має містити:

1. Словесний опис алгоритму

2. Блок-схему алгоритму

3. Код програми (програма має виводити на екран групу та ПІБ студента, який її розробив, а також результат розрахунку)

4. Перевірка виконання на тестових даних і результат роботи програми у вигляді копії екрану

Завдання 3 (на «відмінно», передбачає виконання обох попередніх завдань)

Доповнити попередню програму поліпшеним методом сортування обміном; підрахунком кількості операцій у процесі роботи усіх реалізованих алгоритмів, у тому числі із попередніх завдань (у якості операції слід рахувати будь-які арифметичні дії та порівняння, а також дії над комірками масиву – читання і запис), а також облік часу, затрачений алгоритмом на реалізацію сортування (для того, щоб облік часу був коректним, сортування необхідно повторити в циклі значну кількість раз). Побудувати порівняльні таблиці і діаграми для алгоритмів, зробити висновки.

Звіт має містити:

1. Словесний опис алгоритму

2. Блок-схему алгоритму

3. Код програми (програма має виводити на екран групу та ПІБ студента, який її розробив, а також результат розрахунку)

4. Перевірка виконання на тестових даних і результат роботи програми у вигляді копії екрану

5. Результати порівняння кількості операцій та тривалості виконання алгоритмів у вигляді таблиць і діаграм, висновки.

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