Ви тут: Головна | Алоритми | Лабораторні роботи | ЛР 2

Іловайськ-Сортувальна

Ось до чого на станції Іловайськ-Сортувальна призвела неправильно реалізована процедура сортування... >>>

МЕТОДИ СОРТУВАННЯ МАСИВІВ

Продовження історії Вовчика та Лесі

 

Ordnung muss sein!

Німці (нація така)

 

 

Лабораторні роботи

  1. Лабораторна робота № 1.
    Гуртом і батька легше бити...

  2. Лабораторна робота № 2.
    По порядку номєров становісь!

  3. Лабораторна робота № 3.
    Архімед, розумом Зевсу подібний...

  4. Лабораторна робота № 4.
    Крик мандрагори

Мета роботи: познайомитися з роботою поширених методів сортування, з критеріями та методикою їх порівняння.

Бібліотеку "Geometry" замовнику спихнули, гроші отримали, гуляли всією командою. Не дай, Боже, так напиватися надалі... Але пристойна хвірма без роботи не сидить! Аж ось і нове замовлення.

Оце для Вовчика було справжньою несподіванкою: виявляється, амерікоси цікавляться не тільки конкретними програмами, але й дослідницькими роботами!

Нам запропоновано дослідити якість роботи методів сортування масивів. Методів сортування — безліч. Всі вони відрізняються одне від одного силою критеріїв. І для кожного з методів можна вибрати критерій, за яким він буде найкращим серед інших. На великих масивах найшвидшим вважається метод швидкого сортування (а ви як думали?) QuickSort. Серед початківців найкращім вважається бульбашковий метод простого обміну BubbleSort (не плутати з Bubble gum). Бо найпростіший — один подвійний цикл, і все. А ще ж є метод включення, вибору, двійкового сортування, шейкерного, їхні численні модифікації...

Методи описано у конспекті лекцій та багатьох книжках. До групи т. зв. простих відносимо методи простого включення, вибору та обміну ("бульбашковий"), до групи більш довершених - методи Шелла, пірамідального, швидкого сортування та сортування злиттям.

Серед критеріїв, за якими порівнюються методи, розрізнюють:

  • C (від compare) - кількість порівнянь ключів між собою;
  • M (від move) - кількість операцій перезапису елементів з місця на місце у оперативній пам'яті або кількість обмінів;
  • T (від time) - загальний час роботи процедури.
Хід роботи:
  1. Написати програму, що реалізує один з простих методів сортування (за варіантом). Для одного з довершених методів припустимо скористатися готовою програмою. Програми мають бути написані одною мовою програмування. Пpоцедуpи соpтування методами Шелла, пірамідального та швидкого соpтування мiстяться у файлах мовою С++ та Паскаль, вiдповiдно.
  2. Згенерувати три масиви з випадковими елементами довжиною 100, 10000 та 100 000 елементів, відповідно.
  3. Відсортувати одержані масиви за збільшенням елементів, визначивши при цьому такі параметри:
    • кількість порівнянь;
    • кількість обмінів;
    • фактичний час роботи,
    необхідні кожній з програм (простий та один з довершених методів), щоби відсортувати кожен з трьох масивів. Швидкодія сучасних ЕОМ може привести до того, що час роботи процедури буде дорівнювати нулеві з точністю, яку забезпечує системний таймер. Тоді варто запустити її багато разів у циклі, а потім усереднити результат.
  4. Оформити звіт, навівши одержані експериментальні дані та теоретичні оцінки у вигляді таблиць.
Звіт має містити:
  1. текст програми, яку Ви написали;
  2. надрукований масив на 100 елементів до сортування та після нього (чи взагалі сортує?);
  3. теоретичні оцінки для кількостей операцій для методів Вашого варіанту;
  4. результати експериментального дослідження та - обов'язково - їхній аналіз.

Останнi два пункти можна викласти, наприклад, у такiй таблицi:

Результати порiвняння методiв сортування
 Метод такий-тоМетод сякий-то
N К-ть копіювань
(M)
К-ть порівнянь
(C)
Час
(T)
К-ть копіювань
(M)
К-ть порівнянь
(C)
Час
(T)
Теорет.Експерим.Теорет.Експерим. Теорет.Експерим.Теорет.Експерим.
100            
10000            
100000            
100...            

Для методу Шелла відома лише порядкова оцінка: M = O(N1,2); C = O(N1,2). Це означає, що експериментальні величини можуть відрізнятися від теоретичних у багато разів, але відношення Mексп / Mтеор та Cексп / Cтеор мають бути приблизно постійними незалежно від значення N. Порахуйте ці відношення, занесіть до таблиці та проаналізуйте.


Номер варіанту обчислюється як ((Nсп-1) mod 12) + 1, де Nсп - Ваш номер у журнальному списку.

№ вар Метод
"простий""складний"
1"Простого включення"метод Шелла
2"Простого вибору"метод Шелла
3"Бульбашки"метод Шелла
4"Простого включення"метод швидкого сортування
5"Простого вибору"метод швидкого сортування
6"Бульбашки"метод швидкого сортування
7"Простого включення"метод пірамідального сортування
8"Простого вибору"метод пірамідального сортування
9"Бульбашки"метод пірамідального сортування
10"Простого включення"метод злиття
11"Простого вибору"метод злиття
12"Бульбашки"метод злиття

 


Mail-to: oselin@mmsa.ntu-kpi.kiev.ua
http://mmsa.ntu-kpi.kiev.ua/~oselin (KPI Intranet)
http://www.iasa.kiev.ua/~oselin
Copyright © Olexander Selin 2006 (web-design); Olexander Selin 2006 (content).