Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Порівняльний аналіз ефективності алгоритмів сортування

Автор:   •  Ноябрь 16, 2022  •  Лабораторная работа  •  1,885 Слов (8 Страниц)  •  165 Просмотры

Страница 1 из 8

Міністерство освіти і науки України Харківський національний університет радіоелектроніки

Кафедра системотехніки

Дисципліна: Теорія алгоритмів

Лабораторна робота на тему:

«Порівняльний аналіз ефективності алгоритмів сортування»

Виконав        Перевірив

студент групи КНТ-21-3        асис. Панкратова Ю. Э

Тресков Сергій Павлович        Оцінка        «        »        2021 р.

Харків 2021

  1. Мета заняття

Вивчення алгоритмів сортування масивів, порівняння їх за швидкодією

і витратам пам'яті, вдосконалення практичних навичок роботи з масивами і

функціями.

  1. Хід роботи

[pic 1]

Короткий опис алгоритмів:

Selection:

  • Починаючи з елемента під індексом 0, шукаємо в масиві найменше значення.
  • Знайдене значення міняємо місцями з нульовим елементом.
  • Повторюємо кроки №1 і №2 вже для наступного індексу в масиві (відсортований елемент більше не чіпаємо).

Merge Sort:

  • Якщо в розглянутому масиві один елемент, то він вже відсортований-алгоритм завершує роботу.
  • Інакше масив розбивається на дві частини, які сортуються рекурсивно.
  • Після сортування двох частин масиву до них застосовується процедура злиття, яка за двома відсортованими частинами отримує вихідний відсортований масив.

Heap Sort:

  • Побудуйте max-heap з вхідних даних.
  • На даному етапі найбільший елемент зберігається в корені купи. Замініть його на останній елемент купи, а потім зменшіть його розмір на 1. Перетворіть отримане дерево в max-heap з новим коренем.
  • Повторювати вищевказані кроки, поки розмір купи більше 1.


#include <iostream>

#include <random>

#include <time.h>

using namespace std;

void FillArry(int* arry1, int* arry2, int* arry3, int size) {

        int a;

        random_device rd;

        mt19937 mersenne(rd());

        for (int i{}; i < size; i++) {

                a = mersenne() % 65535;

                arry1[i] = a;

                arry2[i] = a;

                arry3[i] = a;

        }

}

void PrintArry(int* arry, int size) {

        for (int i{}; i < size; i++) {

                cout << arry[i] << " ";

        }

        cout << endl;

}

void SelectionSort(int* arry1, int size) {

        for (int i = 0; i < size - 1; ++i)

        {

                int min_indx = i;

                for (int j = i + 1; j < size; ++j)

                {

                        if (arry1[j] < arry1[min_indx])

                                min_indx = j;

                }

                swap(arry1[i], arry1[min_indx]);

        }

}

void Merge(int A[], int p, int q, int r)

{

        int n1, n2, i, j, k;

        n1 = q - p + 1;

        n2 = r - q;

        int* L = new int[n1];

        int* R = new int[n2];

        for (i = 0; i < n1; i++)

        {

                L[i] = A[p + i];

        }

        for (j = 0; j < n2; j++)

        {

                R[j] = A[q + j + 1];

        }

        i = 0, j = 0;

        for (k = p; i < n1 && j < n2; k++)

        {

                if (L[i] < R[j])

                {

                        A[k] = L[i++];

                }

                else

                {

                        A[k] = R[j++];

                }

        }

        while (i < n1)

        {

                A[k++] = L[i++];

        }

        while (j < n2)

        {

                A[k++] = R[j++];

        }

        delete[] L;

        delete[] R;

}

void MergeSort(int A[], int p, int size) {

...

Скачать:   txt (7.4 Kb)   pdf (145.8 Kb)   docx (51 Kb)  
Продолжить читать еще 7 страниц(ы) »
Доступно только на Essays.club