- •Міністерство освіти і науки україни
- •Лабораторнаробота№ 7. Одновимірнімасиви
- •Короткі теоретичні відомості про масиви
- •Оголошення одновимірного масиву та звернення до його елементів
- •Приклад використання одновимірного масиву
- •Масиви символів
- •Одновимірні масиви як параметри функцій
- •Функції обробки масивів чисел
- •Функція формування випадкового масиву
- •Функції виведення масиву на консоль
- •Функції введення масиву з консолі
- •Функція введення масиву як рядка символів
- •Функція введення масиву по елементам
- •Функція вилучення елементу з масиву
- •Функція перевороту масиву
- •Функція формування масиву накопичених значень
- •Функції обробки рядків символів
- •Функція копіювання частини рядка
- •Функція знаходження підрядка у рядку
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Сортування вибором
- •Приклад сортування елементів масиву у зростаючому порядку за методом вибору
- •Функція сортування масиву методом вибору
- •Сортування обміном (метод бульбашки)
- •Прикладсортування елементів масиву у зростаючому порядку за методом обміну
- •Функція сортування масиву методом обміну
- •Сортування вставкою
- •Приклад сортування елементів масиву у зростаючому порядку за методом вставки
- •Функціясортування масиву заметодом вставки
- •Сортування за ускладненими правилами
- •Обробка упорядкованих масивів
- •Пошук позиції елемента у впорядкованому масиві
- •Вставка елементу до впорядкованого масиву
- •Видалення елементу з упорядкованого масиву
- •Злиття двох впорядкованих масивів
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Оголошення та ініціалізація матриць
- •Матриці як параметри функцій
- •Формування та виведення матриць з використанням консолі
- •Тотальна обробка даних у матрицях
- •Вибіркова обробка матриць
- •Перестановки елементів матриці
- •Видалення та вставка елементів матриці
- •Сортування елементів матриці
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Оголошення шаблону та ініціалізація структур
- •Масивиструктур
- •Введення-виведення структур
- •Сортування масивів структур
- •Створення проекту «Результати атестації»
- •Інтерфейс користувача для проекту
- •Визначення глобальних типів даних програми
- •Функція обробки номеру вибраного варіанту
- •Функція відображення масиву на консолі
- •Додавання нових даних до масиву структур
- •Функція сортування масиву за групою та прізвищем
- •Сортування за кількістю незадовільних оцінок та середньому балу
- •Вибірка студентів, що мають середній бал вище 4
- •Підрахунок кількості студентів що мають більше 2-х незадовільних оцінок
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
Приклад сортування елементів масиву у зростаючому порядку за методом вставки
Результати послідовних кроків сортування представлені на рисунках 8.18 ‑ 8.22.

Рисунок 8.18 – Початкове розбиття масиву при сортуванні за методом вставки

Рисунок 8.19 – Результати виконання першого шагу сортування вставкою

Рисунок 8.20–Результати виконання другого шагу сортування вставкою

Рисунок 8.21–Результати виконання третього шагу сортування вставкою

Рисунок 8.22–Результати виконання четвертого шагу сортування вставкою
Функціясортування масиву заметодом вставки
Програмна реалізація алгоритму за методом вставки наведена на рисунку 8.23.
Ефективність роботи цієї функції можна дещо підвищити за рахунок зменшення кількості порівнянь під час пошуку місця для елементу із буфера. Зважаючи на те, що ліва частина масиву вже впорядкована, місце вставки для елементу із буфера можна знайти методом дихотомії. Цей метод буде розглянуто у підрозділі 8.3. Суть методу полягає в тому, що елемент, який знаходиться в середині області пошуку, порівнюється із елементом у буфері. В результаті порівняння можна визначити, в якій з половин області пошуку знаходиться місце для елементу із буфера, праворуч або ліворуч. Таким чином, в результаті одного порівняння область пошуку звужується наполовину.
Місце вставки буде знаходитися за останнім значенням правої межі області пошуку.
Визначивши місце вставки, можна робити зсув елементів лівої частини масиву праворуч і вставляти елемент із буфера.
Саме таку реалізацію алгоритму слід зробити у проекті до лабораторної роботи.

Рисунок 8.23–Функція сортування елементів масиву у зростаючому порядку за методомвставки
Сортування за ускладненими правилами
Вище ми розглянули різні методи сортування масивів, в яких порядок розташування елементів визначався застосуванням найпростішої операції порівняння «більше» або «менше». В результаті застосування цих операцій ми отримуємо сортування на зростання або на спадання.
Однак у деяких випадках необхідно використовувати більш складні критерії порівняння елементів, ніж просте порівняння. У цих випадках доцільно написати функцію порівняння елементів по заданому правилу, яка буде повертати true, якщо порядок проходження елементів не порушений і false у противному випадку. Цю функцію слід викликати в тих місцях процедури сортування, де потрібно порівняння елементів.
Наприклад, нехай правило сортування масиву цілих чисел сформульовано таким чином: «Спочатку парні числа за спаданням, а потім непарні за зростанням».
Функцію, яка порівнює елементи таким чином, наведено нижче:.
bool goodDisposition(int x1, int x2){ if (x1 % 2 != x2 % 2) //Якщо одне число парне а друге непарне, то меншим буде парне return x1 % 2 < x2 % 2; else if( x1 % 2 == 0) // Числа парні, має бути спадання return x1>x2; else // Числа непарні, має бути зростання return x1 < x2; }
Тепер за допомогою створеної функції можна відсортувати масив в потрібному порядку. Метод сортування може бути будь-яким. Для прикладу використаємо сортування вибором:
void sortChoise(int ar[], int size){ for(int i=0; i<size-1;i++){ for(int j = i + 1; j<size; j++) { if (!goodDisposition(ar[i] ,ar[j])){ int x = ar[i]; ar[i] = ar[j]; ar[j] = x; } } } }
