DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
КН
Кафедра:
Кафедра електронних обчислювальних машин

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

Рік:
2016
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритми та методи обчислень
Група:
КН-31
Коротко про документ

Про що ця робота

Звіт до лабораторної роботи присвячено вивченню, реалізації та дослідженню ефективності методів сортування даних. Наведено програмну реалізацію пірамідального сортування на мові C#.

У роботі розглядаються

  • Алгоритми сортування
  • Пірамідальне сортування
  • Структури даних
  • Аналіз складності алгоритмів
  • Програмування на C#
  • Ефективність алгоритмів

Зміст і розділи

  1. Мета роботи
  2. Теоретичні відомості
  3. Завдання на лабораторну роботу
  4. Пірамідальне сортування
  5. Текст програми
  6. Висновок
Для кого:Студенти технічних спеціальностей, викладачі
Викладачі:Пастернак І. І.

Ключові поняття

сортуванняпірамідальне сортуваннямасивскладність алгоритмутрудомісткістьпорівнянняперестановкаструктура данихефективністьпрограма

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ / Розробка та дослідження ефективності методів сортування ЗВІТ до лабораторної роботи № 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(); } } } Висновок:Вивчив реалізацію та дослідження ефективності методів сортування даних.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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