Розробка та дослідження ефективності методів сортування

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
СП

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ / Розробка та дослідження ефективності методів сортування ЗВІТ до лабораторної роботи № 3 з дисципліни " AЛГОРИТМИ ТА МЕТОДИ ОБЧИСЛЕНЬ" МЕТА РОБОТИ Вивчення, реалізація та дослідження ефективності методів сортування даних. 2. ТЕОРЕТИЧНІ ВІДОМОСТІ 2.1. Задача сортування Задача сортування в програмуванні не вирішенаповністю. Адже, хоча й існує велика кількістьалгоритмівсортування, все ж таки метою програмування є не лишерозробкаалгоритмівсортуванняелементів, але й розробкасамеефективнихалгоритмівсортування. Ми знаємо, що одну й ту саму задачу можнавирішити за допомогоюрізнихалгоритмів і кожен раз зміна алгоритму приводить до нових, більшабоменшефективнихрозв'язківзадачі. Основнимивимогами до ефективностіалгоритмівсортування є перш за все часова ефективність та економневикористанняпам'яті. Згідноцихвимог, простіалгоритмисортування (такі, як сортуваннявибором і сортуваннявставкою) не є дужеефективними. Алгоритм сортуванняобміном, хоча і завершує свою роботу (оскількивінвикористовуєлише цикли з параметром і в тіліциклівпараметрипримусово не змінюються) і не використовуєдопоміжноїпам'яті, але займаєбагато часу. Навіть, якщовнутрішній цикл не міститьжодної перестановки, то діїбудутьповторюватись до тих пір, поки не завершиться зовнішній цикл. Алгоритм сортуваннявиборомефективнішесортуванняобміном за критерієм М(n), тобто за кількістюперестановок, але також є не дужеефективним. З цих причин булорозробленодеякіновіалгоритмисортування, щоотрималиназвушвидкихалгоритмівсортування. Цетакіалгоритми, як сортування деревом, пірамідальнесортування, швидкесортування Хоара та метод цифрового сортування. Метою роботи є ознайомлення з алгоритмами сортування, спробапроаналізуватиїх і написатипрограму, яка б виконуваласортуваннядеякоїпослідовності за допомогоюрізнихалгоритмівсортування. Необхідністьвідсортуватиякі-небудьвеличинивиникає в програмуваннідуже часто. Існуютьситуації, коли попереднєсортуванняданихдозволяєскоротитизмістовнучастину алгоритму в декількаразів, а час йогороботи - у десятки разів. Однаксправедливе й зворотне. Яким би гарним і ефективним не бувобраний алгоритм, але якщо в якості підзадачівінвикористовує "поганє" сортування, то вся робота з йогооптимізаціївиявляєтьсямарною. Невдалореалізованесортуваннявхіднихданихздатнепомітнознизитиефективність алгоритму в цілому. ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ Задати послідовність цілих чисел довільної довжини і представити її у пам’яті комп’ютера у вигляді масиву або лінійного зв’язаного списку. Програмно реалізувати один із вказаних нижче методів сортування згідно з варіантом. Під час виконання програми обов’язково виводити на екран монітора всі проміжні кроки процесу сортування. Провести дослідження побудованого методу за такою схемою: 1). Обґрунтувати вибір структури даних, в якій має зберігатись інформація (масив чи список; якщо список, то однозв’язаний чи двозв’язаний). 2). Намалювати схему алгоритму на прикладі послідовності з десяти (або більше при необхідності) цілих чисел, показуючи всі проміжні кроки процесу сортування. 3). Дослідити метод cортуванняна стійкість. 4). Дослідити метод cортуванняна економність використання пам’яті. 5). Дослідити метод на можливу специфіку вхідної послідовності (чи може послідовність містити елементи з однаковими ключами, чи має бути вхідна послідовність частково відсортована, чи мають елементи послідовності знаходитись у певному діапазоні і т.п.). 6). Дослідити ефективність методу. Для цього визначити значення кількості порівнянь (С) і кількості перестановок (М) в найкращому () і в найгіршому () випадках. Середні значення кількості порівнянь () і кількості перестановок () визначити, як середнє арифметичне для кожної величини від великої кількості спроб сортування випадкових послідовностей. 7). Визначити до якого класу (підкласу) належить досліджуваний метод. Використовуючи методику аналізу основних алгоритмічних конструкцій та визначення набору "елементарних" операцій, обчислити складність методу, що характеризується функцією трудомісткості. Зробити висновки про ефективність методу. 1.Пірамідальне сортування. Результат виконання програми. / Текст програми: PyramidSorting.cs: using System; namespace Lab2 { classPyramidSorting { //додати1елементпіраміди staticint Add2Pyramid(double[] arr, inti, int N) { intimax; doublebuf; if ((2 * i + 2) < N) { if (arr[2 * i + 1] <arr[2 * i + 2]) { imax = 2 * i + 2; } else { imax = 2 * i + 1; } } elseimax = 2 * i + 1; if (imax>= N) { returni; } if (arr[i] <arr[imax]) { buf = arr[i]; arr[i] = arr[imax]; arr[imax] = buf; if (imax< N / 2) { i = imax; } } returni; } public static void Sorting(double[] arr, intlen) { //Крок 1. Створенняпіраміди for (inti = len / 2 - 1; i>= 0; --i) { longprev_i = i; i = Add2Pyramid(arr, i, len); if (prev_i != i) { ++i; } } //Kрок 2: сортування doublebuf; for (int k = len - 1; k > 0; --k) { buf = arr[0]; arr[0] = arr[k]; arr[k] = buf; inti = 0, prev_i = -1; while (i != prev_i) { prev_i = i; i = Add2Pyramid(arr, i, k); } } } } } Program.cs: using System; namespace Lab2 { class Program { static void Main(string[] args) { double[] arr = new double[20]; //fill the array with random numbers Random rd = new Random(); Console.WriteLine("Масивдосортування:"); for (inti = 0; i<arr.Length; ++i) { arr[i] = rd.Next(1, 21); Console.Write(arr[i] + " "); } PyramidSorting.Sorting(arr, arr.Length); Console.WriteLine("\n\nМасивпiслясортування:"); for (inti = 0; i<arr.Length; ++i) { Console.Write(arr[i] + " "); } Console.ReadLine(); } } } Висновок:Вивчив реалізацію та дослідження ефективності методів сортування даних.
Антиботан аватар за замовчуванням

25.03.2016 12:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!