Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Інститут комп’ютерних технологій, автоматики та метрології
кафедра “Електронних обчислювальних машин”
/
Звіт
з лабораторної роботи №1
дисципліни «Алгоритми та моделі обчислень»
на тему: «Алгоритм, властивості, параметри та характеристики
складності алгоритму»
Варіант 2
Львів – 2024
ЛАБОРАТОРНА РОБОТА №1
Алгоритм, властивості, параметри та характеристики складності алгоритму
Мета роботи: Проаналізувати складність заданих алгоритмів
Завдання
Скласти програму (С/C++), яка дозволяє провести порівняння двох алгоритмів за характеритикою часової складності.
Вхідні дані:
Варіант
Алгоритм 1
Алгоритм 2
2
Сортування бульбашкою
Сортування включенням
Алгоритм рішення завдання:
Рішення алгоритму сортування бульбашкою
Почати з першого елементу масива і порівняти його з попереднім елементом.
Якщо поточний елемент мешний менший за попередній, то їх потрібно поміняти місцями.
Повторювати цей процес для кожної пари сусідніх елементів у масиві
Протовжувати цей процес до тих пір, поки весь масив не буде відсортований (тобто до тих пір, поки під час однієї ітерації не відбудеться жодного обміну елементів)
Складність алгоритму: N2
Рішення алгоритму сортування включенням
Починаючи з другого елемента масиву, порівняти його з попередніми елементами.
Якщо поточний елемент менший за попередній, то вставте його місце у відсортованій частині масиву, зсунувши всі більші елементи на одну позицію вправо.
Повторюйте цей процес для кожного елемента масиву.
Продовжуйте цей процес до тих пір, поки не буде відсортована для послідовність.
Складність алгоритму: N2
Код програми:
#include <iostream>
#include <chrono>
using namespace std;
void babbleSort(int array[], int size){
for (int i = 0; i < size; i++) {
for (int j = 1; j < size - i; j++) {
if (array[j] < array[j - 1]) {
int temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
}
}
}
}
void insertionSort(int array[], int size){
for(int i = 1; i < size; i++){
int curr = array[i];
int j = i - 1;
while(j >= 0 && array[j] > curr){
array[j + 1] = array[j];
j--;
}
array[j + 1] = curr;
}
}
int main() {
const int SIZE_ARR = 1000;
int arr1[SIZE_ARR];
int arr2[SIZE_ARR];
int size = SIZE_ARR;
srand(time(NULL));
for(int i = 0; i < size; i++) {
int random = rand();
arr1[i] = random;
arr1[i] = random;
}
auto startBubbleSort = std::chrono::high_resolution_clock::now();
babbleSort(arr1, size);
auto endBubbleSort = std::chrono::high_resolution_clock::now();
auto durationBubbleSort = std::chrono::duration_cast<std::chrono::microseconds>(endBubbleSort - startBubbleSort);
cout << "Time for bubble sort: " << durationBubbleSort.count() << " ms" << endl;
auto startInsertionSort = std::chrono::high_resolution_clock::now();
insertionSort(arr2, size);
auto endInsertionSort = std::chrono::high_resolution_clock::now();
auto durationInsertionSort = std::chrono::duration_cast<std::chrono::microseconds>(endInsertionSort - startInsertionSort);
cout << "Time for insertion sort: " << durationInsertionSort.count() << " ms" << endl;
return 0;
}
Екранна форма з результатами роботи програми:
ОБОВЯЗКОВО. ЗАПУСТІТЬ ПРОГРАМУ І ВСТАВТЕ СЮДА СКРІН. ЦЕ ЗРОБЛЕНО ДЛЯ ТОГО ЩОБ ЧАС БУВ У КОЖНОГО РІЗНИЙ !!!
Висновок:
В даній лабораторній роботі я навчився писати алгоритми на мові С++ і визначати складність алгоритму.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!