Лабораторная работа: Алгоритми сортування

Лабораторная работа: Алгоритми сортування




🛑 👉🏻👉🏻👉🏻 ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































Мета:
Ознайомитися із простими алгоритмами сортування та навчитися їх програмувати. Засвоїти базові умови тестування програм та вимірювання їх ефективності.
Сортування вставками - простий алгоритм сортування на основі порівнянь. На великих масивах є значно менш ефективним за такі алгоритми, як швидке сортування, пірамідальне сортування та сортування злиттям. Однак, має цілу низку переваг:
ефективний (за звичай) на маленьких масивах
ефективний при сортуванні масивів, дані в яких вже непогано відсортовані: продуктивність рівна O (n + d), де d - кількість інверсій
на практиці ефективніший за більшість інших квадратичних алгоритмів (O (n 2
)), як то сортування вибором та сортування бульбашкою: його швидкодія рівна n 2
/4, і в найкращому випадку є лінійною є стабільним алгоритмом
// Insertion-------------------------------------------------------------
for (j=i-1; j>=0 && * (arr+j) >buf; j--)
printf ("The time was:%f s\n", (end - start) / CLK_TCK);
// ---------------------------------------------------------------------
Сортування злиттям - алгоритм сортування, в основі якого лежить принцип Розділяй та володарюй. В основі цього способу сортування лежить злиття двох упорядкованих ділянок масиву в одну впорядковану ділянку іншого масиву. Злиття двох упорядкованих послідовностей можна порівняти з перебудовою двох колон солдатів, вишикуваних за зростом, в одну, де вони також розташовуються за зростом. Якщо цим процесом керує офіцер, то він порівнює зріст солдатів, перших у своїх колонах і вказує, якому з них треба ставати останнім у нову колону, а кому залишатися першим у своїй. Так він вчиняє, поки одна з колон не вичерпається - тоді решта іншої колони додається до нової.
Під час сортування в дві допоміжні черги з основної поміщаються перші дві відсортовані підпослідовності, які потім зливаються в одну і результат записується в тимчасову чергу.
Потім з основної черги беруться наступні дві відсортовані підпослідовності і так до тих пір доки основна черга не стане порожньою. Після цього послідовність з тимчасової черги переміщається в основну чергу. І знову продовжується сортування злиттям двох відсортованих підпослідовностей.
Сортування триватиме до тих пір поки довжина відсортованої підпослідовності не стане рівною довжині самої послідовності.
// Merge-----------------------------------------------------------------
void merge (int *a, int l, int m, int r)
for (k=l; k<=r; k++) {a [k] =b [k]; }
void MergeSort (int *a, int l, int r)
// ----------------------------------------------------------------------
printf ("The time was:%f s\n", (end - start) / CLK_TCK);
}Результат роботи сортування злиттям
Швидке сортування (англ. Quick Sort) - алгоритм сортування, добре відомий, як алгоритм розроблений Чарльзом Хоаром, який не потребує додаткової пам'яті і виконує у середньому O (n log (n)) операцій. Однак, у найгіршому випадку робить O (n 2
) порівнянь. Оскільки алгоритм використовує дуже прості цикли і операції, він працює швидше інших алгоритмів, що мають таку ж асимптотичну оцінку складності.
Ідея алгоритму полягає в переставлянні елементів масиву таким чином, щоб його можна було розділити на дві частини і кожний елемент з першої частини був не більший за будь-який елемент з другої. Впорядкування кожної з частин відбувається рекурсивно. Алгоритм швидкого сортування може бути реалізований як у масиві, так і в двозв’язному списку.
Швидкесортування є алгоритмом на основі порівнянь, і не є стабільним.
// ----------------------------------------------------------------------
void QuickSort (int *arr, int a, int b)
int i=a, j=b, m = rand ()% (b-a) +a;
// ---------------------------------------------------------------------
printf ("The time was:%f s\n", (end - start) / CLK_TCK);
Сортування купою - алгоритм сортування на основі порівнянь. Він полягає у побудові купи і за її допомогою виділення наступного елемента відсортованої послідовності. Хоча, на практиці, він трохи повільніший на більшості машин, ніж швидке сортування, у нього є перевага - швидкодія у найгіршому випадку рівна (n log n). Є не стабільним алгоритмом.
// Heap------------------------------------------------------------------
void doHeap (int *arr, int k, int n)
if (c < n && * (arr+c) < * (arr+c+1)) c++;
for (i=n/2; i >= 0; i--) doHeap (a, i, n-1);
// ----------------------------------------------------------------------
printf ("The time was:%f s\n", (end - start) / CLK_TCK);
if ( (f=fopen ("massiv. txt","wt")) ! =NULL)
printf ("Enter amount of elements ");
printf ("Choos method (0: rand; 1: rand up; 2: rand down)");
printf ("Enter sort combination ");
for (int j=i-1; j>=0 && * (a+j) >buf; j--)
for (int j=i-1; j>=0 && * (a+j) Лабораторная работа: Алгоритми сортування
Реферат: Одинокий
Добыча И Транспортировка Газа Реферат
Доклад по теме Организация поставок алкогольной продукции в Федеративную Республику Бразилию
Витамины Реферат По Медицине
Реферат по теме Предмет і методи політології
Контрольная Работа По Математике 21 Век
Сочинение: Женские образы в литературе XIX века
Выращивании Культуры Реферат
Реферат: Влияние предметной деятельности на развитие детей
Курсовая работа: Организация монтажа электрооборудования литейного цеха и расчет его технико-экономических показателей
Дипломная работа по теме Кредитные операции в коммерческом банке
Реферат На Тему A Revolt Rather Than A Revolution
Реферат: Стандартизация и сертификация лекарственных средств
Реферат: Обретение облика Иисуса Христа и история формирования иконографических канонов изображения Иису
Небольшое Сочинение На Тему Мое Родное Село
Дипломная работа: Стоимость бизнеса
Реферат: Налоговый контроль, понятие, виды и методы
Контрольная работа по теме Моделирование обслуживания вычислительных процессов в системе
Курсовая Работа На Тему Имидж Делового Человека
Дипломная работа: Междисциплинарные технологии социальной работы. Скачать бесплатно и без регистрации
Реферат: Рыбинское водохранилище
Курсовая работа: Жилищная политика в Республике Беларусь. Право граждан на жилье
Курсовая работа: Экстрадиция в уголовном праве и правоприменительной практике

Report Page