Файл: Сортировка слиянием.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 25.06.2023

Просмотров: 110

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

radix_sort(arr + last, size - last, bit >> 1);

}

int main(int argc, char* argv[])

{

// Первая часть программы

// демонстрирует работоспособность наших функций для сортировки

// массива из 10 элементов, заполненного случайными двухзначными числами.

const int sz = 10; // размер массива

int a[sz]; // исходный неотсортированный массив

int b[sz]; // массив для сортировки

int c[sz]; // буфер для функции merge_sort

int* r; // переменная для получения результата работы функции merge_sort

//заполняем массив a случайными числами от -99 до 99

//и выводим на экран

for (int i = 0; i < sz; i++)

{

a[i] = rand() % 100 * (rand() % 2 ? -1 : 1);

cout << a[i] << " ";

}

memcpy(b, a, sz * sizeof(int)); // копируем массив а в b

selection_sort(b, sz); // сортируем массив b

cout << "\n" << "selection_sort: ";

for (int i = 0; i < sz; i++) cout << b[i] << " "; // выводим массив на экран

memcpy(b, a, sz * sizeof(int)); // копируем массив а в b

insertion_sort(b, sz); // сортируем массив b

cout << "\n" << "insertion_sort: ";

for (int i = 0; i < sz; i++) cout << b[i] << " "; // выводим массив на экран

memcpy(b, a, sz * sizeof(int)); // копируем массив а в b

bubble_sort(b, sz); // сортируем массив b

cout << "\n" << "bubble_sort: ";

for (int i = 0; i < sz; i++) cout << b[i] << " "; // выводим массив на экран

memcpy(b, a, sz * sizeof(int)); // копируем массив а в b

shells_sort(b, sz); // сортируем массив b

cout << "\n" << "shells_sort: ";

for (int i = 0; i < sz; i++) cout << b[i] << " "; // выводим массив на экран

memcpy(b, a, sz * sizeof(int)); // копируем массив а в b

quick_sort(b, 0, sz - 1); // сортируем массив b

cout << "\n" << "quick_sort: ";

for (int i = 0; i < sz; i++) cout << b[i] << " "; // выводим массив на экран

memcpy(b, a, sz * sizeof(int)); // копируем массив а в b

r = merge_sort(b, c, 0, sz - 1); // сортируем массив b

cout << "\n" << "merge_sort: ";

for (int i = 0; i < sz; i++) cout << r[i] << " "; // выводим массив на экран

memcpy(b, a, sz * sizeof(int)); // копируем массив а в b

heap_sort(b, sz); // сортируем массив b

cout << "\n" << "heap_sort: ";

for (int i = 0; i < sz; i++) cout << b[i] << " "; // выводим массив на экран

memcpy(b, a, sz * sizeof(int)); // копируем массив а в b

radix_sort(b, sz); // сортируем массив b

cout << "\n" << "radix_sort: ";

for (int i = 0; i < sz; i++) cout << b[i] << " "; // выводим массив на экран

cout << "\n";

// Вторая часть программы измеряет и выводит на экран время выполнения

// каждой из наших функций сортировки при сортировке сначала массива из 1000000

// случайных чисел, а затем сортировке уже отсортированного массива.

const int SZ = 1000000; // размер массива

int* A = new int[SZ]; // исходный неотсортированный массив

int* B = new int[SZ]; // массив для сортировки

int* C = new int[SZ]; // буфер для функции merge_sort

int* R; // переменная для получения результата работы функции merge_sort


unsigned t; // переменная для сохранения текущего времени перед началом сортировки

// заполняем массив А случайными числами

for (int i = 0; i < SZ; i++)

{

A[i] = rand();

}

memcpy(B, A, SZ * sizeof(int)); // копируем массив A в B

t = clock(); // запомниаем исходное время

selection_sort(B, SZ); //сортируем массив B

cout << "\n" << "selection_sort: " << clock() - t; //выводим время выполнения

t = clock(); // запомниаем исходное время

selection_sort(B, SZ); //сортируем уже отсортированный массив B

cout << ", " << clock() - t; //выводим время выполнения

memcpy(B, A, SZ * sizeof(int)); // копируем массив A в B

t = clock(); // запомниаем исходное время

insertion_sort(B, SZ); //сортируем массив B

cout << "\n" << "insertion_sort: " << clock() - t; //выводим время выполнения

t = clock(); // запомниаем исходное время

insertion_sort(B, SZ);//сортируем уже отсортированный массив B

cout << ", " << clock() - t; //выводим время выполнения

memcpy(B, A, SZ * sizeof(int)); // копируем массив A в B

t = clock(); // запомниаем исходное время

bubble_sort(B, SZ); //сортируем массив B

cout << "\n" << "bubble_sort: " << clock() - t; //выводим время выполнения

t = clock(); // запомниаем исходное время

bubble_sort(B, SZ);//сортируем уже отсортированный массив B

cout << ", " << clock() - t; //выводим время выполнения

memcpy(B, A, SZ * sizeof(int)); // копируем массив A в B

t = clock(); // запомниаем исходное время

shells_sort(B, SZ); //сортируем массив B

cout << "\n" << "shells_sort: " << clock() - t; //выводим время выполнения

t = clock(); // запомниаем исходное время

shells_sort(B, SZ); //сортируем уже отсортированный массив B

cout << ", " << clock() - t; //выводим время выполнения

memcpy(B, A, SZ * sizeof(int)); // копируем массив A в B

t = clock(); // запомниаем исходное время

quick_sort(B, 0, SZ - 1); //сортируем массив B

cout << "\n" << "quick_sort: " << clock() - t; //выводим время выполнения

t = clock(); // запомниаем исходное время

quick_sort(B, 0, SZ - 1); //сортируем уже отсортированный массив B

cout << ", " << clock() - t; //выводим время выполнения

memcpy(B, A, SZ * sizeof(int)); // копируем массив A в B

t = clock(); // запомниаем исходное время

R = merge_sort(B, C, 0, SZ - 1); //сортируем массив B

cout << "\n" << "merge_sort: " << clock() - t; //выводим время выполнения

t = clock(); // запомниаем исходное время

R = merge_sort(R, R == C ? B : C, 0, SZ - 1); //сортируем уже отсортированный массив R

cout << ", " << clock() - t; //выводим время выполнения

memcpy(B, A, SZ * sizeof(int)); // копируем массив A в B

t = clock(); // запомниаем исходное время

heap_sort(B, SZ); //сортируем массив B

cout << "\n" << "heap_sort: " << clock() - t; //выводим время выполнения

t = clock(); // запомниаем исходное время

heap_sort(B, SZ); //сортируем уже отсортированный массив B