- •1. Загальні відомості 7
- •1. Загальні відомості
- •1.1. Структура програми
- •1.2. Типи даних
- •2. Лабораторна робота 1. «Обчислення арифметичних виразів» (2 год.)
- •2.1. Теоретичні відомості
- •2.2.1. Приведення типів
- •2.2. Постановка задачі
- •2.3. Варіанти
- •2.4. Методичні вказівки
- •Постановка задачі.
- •3.1. Теоретичні відомості
- •3.1.1. Умовний оператор if-else
- •3.1.2. Оператор вибору switch
- •3.1.3. Оператори циклу
- •3.1.4. Приклад. Побудова геометричної фігури
- •3.2. Постановка задачі
- •3.3. Варіанти
- •3.4. Методичні вказівки
- •Постановка задачі.
- •4. Лабораторна робота 3. «Обчислення ряду. Форматне введення-виведення даних» (2 год.)
- •4.1. Теоретичні відомості
- •4.1.1. Поняття ряду. Ітераційний процес
- •4.1.2.Форматне виведення даних
- •4.1.3.Форматне введення
- •4.1.4. Приклад. Програма обчислення ряду
- •4.2. Постановка задачі
- •4.3. Варіанти
- •4.4. Методичні вказівки
- •Постановка задачі.
- •5. Лабораторна робота 4. «Функції. Ітераційні процеси» (4 год.)
- •5.1. Теоретичні відомості
- •5.1.1.Ступеневі ряди
- •5.2. Постановка задачі
- •5.3. Варіанти
- •5.4. Методичні вказівки
- •Постановка задачі.
- •6. Лабораторна робота 5. «Масиви й покажчики. Введення й виведення елементів» (2 год.)
- •6.1. Теоретичні відомості
- •6.1.1. Оголошення масиву
- •6.1.2. Масиви й покажчики
- •6.1.3. Записи «покажчик-зсув» і «покажчик-індекс»
- •6.1.4. Пошук найменшого й найбільшого елементів масиву
- •6.2. Постановка задачі
- •6.3. Варіанти
- •Постановка задачі.
- •7.1.2. Масив випадкових чисел
- •7.1.3. Видалення елемента із масиву
- •7.1.4. Вставка елемента в масив
- •7.1.5. Перестановка двох елементів
- •7.1.6. Циклічна перестановка елементів
- •7.2. Постановка задачі
- •7.3. Варіанти
- •Постановка задачі.
- •8.1.2. Передача масиву у функцію
- •8.1.3. Приклад. Функції введення й виведення елементів матриці
- •8.2. Постановка задачі
- •8.3. Варіанти
- •8.4. Методичні вказівки
- •Постановка задачі.
- •9. Лабораторна робота 8. «Сортування масивів» (4 год.)
- •9.1. Теоретичні відомості
- •9.1.1. Метод обміну (бульбашковий)
- •9.1.2. Метод прямого вибору
- •9.1.3. Метод вставок
- •9.1.4. Порівняння ефективності алгоритмів сортування
- •9.1.5. Генерація псевдовипадкових чисел
- •9.2. Постановка задачі
- •9.3. Методичні вказівки
- •Постановка задачі.
- •10. Лабораторна робота 9. «Рядки» (4 рік.)
- •10.1. Теоретичні відомості
- •10.1.1. Функції для роботи із символами
- •10.1.2. Строкові константи
- •10.1.3. Рядки як масиви
- •10.1.4. Передача рядка у функцію
- •10.1.4. Уведення/виведення символів і рядків
- •10.1.4. Функції обробки рядків
- •10.2. Постановка задачі
- •10.3. Варіанти
- •10.4. Методичні вказівки
- •Постановка задачі.
- •Література
9.1.4. Порівняння ефективності алгоритмів сортування
Ефективність того або іншого алгоритму сортування оцінюється інтегральним показником – тривалістю виконання сортування. Основними операціями, на які затрачається машинний час, є порівняння й пересилання.
Операція порівняння (наприклад, типу a[j+1]>a[j]) – один з основних гальмуючих факторів, особливо, якщо виконується сортування рядків. Наприклад, для з'ясування, який із двох схожих рядків більше, доводиться порівнювати букву за буквою на великій довжині рядка. При роботі з числовими масивами одна операція порівняння виконується значно швидше, ніж при порівнянні рядків. Однак загальне число порівнянь у процесі сортування росте пропорційно квадрату розміру масиву. Можна показати, що робота кожного з розглянутих методів сортування (обміну, вибору й вставок) характеризуються приблизно однаковим числом порівнянь , де – розмір масиву.
Оскільки по числу порівнянь розглянуті три методи сортування майже рівноцінні, порівняльну ефективність методів потрібно визначати по числу пересилань. До пересилань ставляться операції присвоювання (наприклад, для перестановки двох елементів масиву за допомогою функції swap потрібно виконати три пересилання). Число пересилань у наведені вище функціях сортування зберігається в змінної mov (див. пункти 9.1.1 – 9.1.3).
9.1.5. Генерація псевдовипадкових чисел
Функція rand()%max при заданому параметрі max фактично генерує одне ж і ту послідовність випадкових чисел. Щоб при кожному запуску генератора породжувалася нова послідовність псевдовипадкових чисел, потрібно використати функцію srand, що встановлює точку відліку при генерації чисел і ставиться перед функцією rand, наприклад,
#include <stdlib.h>
#include <time.h>
. . .
srand((unsigned)time(NULL));
for (int i=0; i<n; i++)
a[i] = rand()%max;
9.2. Постановка задачі
Скласти програму для сортування масиву випадкових чисел трьома методами: обміну, вибору й включень. Проаналізувати ефективність різних методів сортування.
9.3. Методичні вказівки
Програма повинна мати наступну структуру:
<Підключення необхідних бібліотек>
<Ініціалізація змінних>
<Цикл по розміру масиві>
<Створення i ініціалізація дінамичного масиву >
<Печатка вихідного масиву>
<Копіювання вихідного масиву>
<Сортування копії масиву методом Buble>
<Сортування копії масиву методом Selection>
<Сортування копії масиву методом Insertion>
<Виведення результатів сортування>
Операції ініціалізації, виведення, сортування масиву мають бути реалізовані за допомогою функцій.
На етапі налагодження програми показувати на екрані вихідний масив і результаті ітерації. Потім при відображенні результатів сортування (див. наступний пункт) відключити це виведення.
Результати сортування різними методами (кількість пересилань) потрібно вивести у вигляді таблиць:
num Buble Select Insert
..... ...... ...... ......
..... ...... ...... ......
Тричі запустити програму. Знайти середнє арифметичне число пересилань для кожного розміру масиву й трьох методів сортування.
На основі отриманих даних побудувати в електронних таблицях Excel графіки залежностей середньо арифметичного числа пересилань від розміру масиву для трьох методів. По осі абсцис – значення num , по осі ординат – відношення mov/num.
9.4. Зміст звіту