- •Інформатика
- •Необчислювальні алгоритмы
- •Від автора
- •Створення алгоритму
- •Налагодження алгоритму
- •Допоміжні задачі
- •Поняття систем числення
- •Числова інформація Цілі числа
- •Дійсні числа
- •Текстова інформація Символи
- •Дерево. Бінарне дерево
- •If to nil then with t* do begin
- •Бінарний пошук Пошук діленням навпіл
- •Рекурсивний бінарний пошук
- •Пошук у рядку
- •Скінченні автомати Основні поняття
- •Пошук у мережі
- •Прямі методи сортування Сортування вибором
- •Сортування обміном
- •Шейкерне сортування
- •Сортування методом Шелла
- •Швидке сортування
- •Метод прямого злиття
- •Метод природного злиття
- •Сортування підрахунком
- •Цифрове сортування
- •Література
- •61012, М. Харків, вул. Енгельса, 11.
Цифрове сортування
Алгоритм цифрового сортування RadixSort колись застосо-вувався у машинах для сортування перфокарт. В обчислюваль-них машинах першого покоління перфокарти, картонні карткй використовувалися для збереження інформації. На них за до-
199
помогою пристроїв, які називалися перфораторами, пробивали-ся дірки. На перфокарта у 80 колонках у певних позиціях можна було пробити до 12 дірок. Комбінації цих пробитих дірок від-повідали певному символу, тобто на кожній перфокарті можна було набити інформацію з 80 символів. Цифри від 0 до 9 кодува-лися дірками у відповідних рядках 0-9 у колонках, що відпові-дали даній цифрі (див. с. 50).
Сортувальні машини за вказаним стовпчиком, по якому не-обхідно було виконати сортування перфокарт, розкладали колоду перфокарт на 10 стосів залежно від того, яка з дірок 0-9 була пробита у вказаному стовпчику.
Ця ідея і лягла в основу алгоритму цифрового сортування масиву. Сформулюемо Е£.
Нехай задано масив цілих чисел, максимальна розрядність яких дорівнює d. Для прикладу розглянемо масив із 7 цілих трицифрових чисел:
329, 457, 657, 839, 436, 720, 355.
Розглянемо спочатку молодші розряди кожного елемента масиву. Там можуть бути цифри від 0 до 9. Розкладемо всі числа на 10 стосів: у перший - числа, які мають молодшу цифру 0, у другий - 1, у третій - 2, і т. д., у десятий - 9 (мал. 85).
720 |
|
|
|
|
355 |
436 |
657 457 |
|
839 329 |
0123456789
Мал. 85
Тепер складемо стоси чисел знову разом, зберігаючи первин-ну послідовність чисел у кожному стосі відносно їх ПОСЛІДОВ-ності в заданому масиві:
720, 355, 436, 457, 657, 329, 839.
На другому кроці сортування будемо цей масив розкладати на стоси відповідно до цифр десятків кожного числа (мал. 86).
|
|
329 720 |
839 43G |
|
657 457 355 |
|
|
|
|
о
8
12 3 4 5 6 7
Мал. 86
Склавши отримані числа зі стосів один за одним, отримаємо: 720, 329, 436, 839, 355, 457, 657. 200
Залишився один останній крок для розкладання чисел по стосах відповідно до старших розрядів, тобто цифр сотень кожного числа (мал. 87).
|
|
|
355 329 |
457 436 |
|
657 |
720 |
839 |
|
0123456789
Мал. 87
Запишемо числа, отримані у стосах, зберігаючи їх порядок у масиві, з якого вони потрапили у ці стоси. Результатом буде відсортований масив чисел:
329, 355, 436, 457, 657, 720, 839.
За три кроки отримали результат роботи алгоритму цифрового сортування. Чому саме за три? Зрозуміло - це прямо по-в'язано з кількістю цифр у найбільшому числі. До оцінки ефек-тивності роботи даного алгоритму звернемося пізніше.
А зараз давайте спробуємо записати алгоритм цифрового сортування:
1) зарезервуватимісце для 10 додаткових масивівAg, Av ...,Ад (довжина їх повинна збігатися з довжиною вхідного масиву, оскільки можна підібрати такий тест, щоб усі елементи вхід- ного масиву попали в один стос);
2) визначити розрядність найбільшого числа вхідного масиву; 3)визначити і = 1;
-
виділити в кожному числі заданого масиву і-у цифру і пе-реписати всі числа, починаючи з першого і завершуючи остан-нім, у додатковии масив, порядковии номер якого збігається з і-ю цифрою поточного числа;
-
переписати числа з масивів А0, А., ..., А9 у вхідний масив, зберігаючи їх послідовність у додаткових масивах;
-
збільшити і на 1 і якщо і не перевищує розрядності най-більшого числа, то перейти до пункту 4.
А тепер запишемо алгоритм цифрового сортування елемен-тів одновимірного масиву у вигляді тексту фрагмента Pascal-програми. Для спрощення вважатимемо, що значениями еле-ментів масиву є натуральні числа.
(Пошук максимального елемента вхідного масиву.} read (х[1]); max :=х[1]; for i := 2 to n do begin
read (x[i]);
if x[i] > max then max :=x[i]; end;
201
d := 0; {Визначення розрядності максимального числа.)
while max > 0 do begin inc (d);
max := maxdiv 10 end; count := 1;
for i := 1 to d do {Порозрядний перегляд елементів масиву.}
begin
{Ініціалізація кількості елементів у масивахЛ0, ...,Ад.) forj :=0to9dok[j] :=0;
for j : = 1 to n do {Розміщення елементів масиву x по масивам А0,.... А9.) begin
digit := (x[j] div count) mod 10; inc (k[digit]); A[digit][k[digit]]:=x[j] end; count := count * 10; {Визначення наступного розряду елементів масиву.} j := 1; {Злиття елементів з масивів А0, ...,/19у масивх.}
for q := 0 to 9 do forw:= 1 to k[q] do begin
x[j]:=A[q][w]; inc(j) end; end;
Перейдемо до визначення оцінки ефективності роботи алгоритму цифрового сортування елементів масиву. її можна об-рахувати, проаналізувавши наведений текст програми. Та частина програми, яка безпосередньо виконує сортування масиву, складається з двох вкладених циклів: перший for і := 1 to d do залежить від кількості знаків найбільшого числа заданого масиву, а другий for j := 1 to n do - від кількості елементів цього масиву. Усередині зовнішнього циклу є где один цикл for q := 0 to 9 do, який збирає елементи, розкладені по стосам, в один масив. Він загалом переглядає п елементів заданого масиву. Тому результатом такого аналізу перегляду п елементів масиву буде d(n + п) - 2dn. Оскільки величина d є значно малою порівняно з п (maxlongint = 2147483647), то оцінкою ефективності роботи алгоритму цифрового сортування можна вважати 0(п).
Цифрове сортування досить чутливе до кількості вхідних даних. Тому при тестуванні цього алгоритму необхідно вра-хувати саме цей фактор. Але традиційно коректність його роботи перевірятимемо при п > 100 на таких вхідних даних:
-
вхідний масив уже впорядкований необхідним чином;
-
вхідний масив є частково впорядкованим;
202
-
вхідний масив упорядкований у зворотному порядку;
-
елементи вхідного масиву розміщені випадковим чином.
/ Запитання для самоконтролю
-
Якою є історія застосування алгоритму цифрового сортуванкя?
-
У чому полягає ідея алгоритму цифрового сортування?
-
Продемонструйте на власному прикладі роботу алгоритму цифрового сортування.
-
Сформулюйте алгоритм цифрового сортування у словесній формі.
-
Запишіть текст Pascal-програми, що реалізує алгоритм цифрового сортування одновимірного масиву.
-
Проаналізуйте переваги й обмеження щодо використання методу цифрового сортування.
-
Якою є оцінка ефективності роботи алгоритму, що реалізує метод цифрового сортування одновимірного масиву? Обґрунтуйте свою відповідь.
Завдання
-
Реалізувати у вигляді прогреми алгоритм цифрового сортування заданої послідовності за зростанням.
-
Модифікувати алгоритм, реалізований у завданні 1, так, гцоб сортування відбувалося за спаданиям.
-
Протестувати реалізовані у завданнях 1-2 алгоритми для масиву 15, 4, 10, 8, 6, 9, 16, 1, 7, 3, 11, 14, 2, 5, 12, 13.
-
Проаналізувати покрокове виконання завдання 3 щодо кількості виконуваних дій.
-
Шдібрати власні тести, які доводить переваги й показу-ють недоліки методу цифрового сортування при п > 100.
-
Зробити письмовий аналіз завдань 3-5.
ПОРІВНЯННЯ МЕТОДІВ СОРТУВАННЯ
Завершуючи ознайомлення з різноманітними та різноплано-вими методами сортування, на останок спробуємо порівняти їх ефективність. Традиційно вважатимемо п кількістю елементів масиву, що сортується.
Для того щоб порівняння алгоритмів, що реалізують відпо-відні методи сортування, було достатньо наочним, заноситиме-мо час їх виконання в таблицю з параметрами, які визначають таке початкове формування елементів вхідного масиву: упорядкований за зростанням Growth, визначений випадковим чином Random, упорядкований за спаданиям Decrease. Нага-дуемо, що робота всіх алгоритмів сортування спрямована на сортування вхідних масивів за зростанням.
203
Оскільки замір часу виконання алгоритмів залежить не лише від кількості елементів масивів, а й від технічних характеристик комп'ютера, на якому вони тестувалися, то зазначи-мо, що тестування відбувалося на комп'ютері AMD Duron, 1.00 ГТц, 128 МБ ОЗУ. Вибір саме такого комп'ютера спри-чинено тим, що на потужніших комп'ютерах досить важко за-фіксувати час виконання програм, що реалізують «швидкі» алгоритми, особливо ті, які певним чином обмежують кіль-кість оброблювальних елементів (наприклад, сортування за лі-нійний час). I навпаки, на «повільніших» машинах ыеможливо дочекатися результату роботи програм, що реалізують прямі методи сортування.
Як уже зазначалося, для фіксації часу роботи програми, що реалізує розроблений алгоритм, можна застосувати таку змінну:
var timer: longint absolute $40: $6c.
Зазначимо також (див. с. 23), що під час тестування програм фіксувався «чистий» час їх роботи, тобто не враховувалося введения вхідної інформації та виведення результуючого відсорто-ваного масиву. Тобто загальний вигляд програми був таким:
timeold := timer;
<програма>
writeln ((timer - timeold) /18. 2);
Під час тестування виявилося, що на обраному комп'ютері не для всіх тестів і не для всіх алгоритмів вдалося зафіксувати час. При такій ситуації в таблицю заносився коментар «no time». I ще: для спрощення замість log2n будемо вказувати logn.
Шсля обговорення всіх технічних питань перейдемо безпосе-редньо до проведения порівняння методів сортування (табл. 19).
Таблица 19
Тип методу |
Назва методу |
Оцінка |
Тип |
Growth |
Random |
Decrease |
N = 1000 |
||||||
Прямі методи |
Вибором |
п- |
word |
no time |
no time |
no time |
Обміном |
пг |
word |
no time |
0,055 |
0,055 |
|
Включениям |
п1- |
word |
no time |
no time |
0,055 |
|
о Si ф |
Бінарне включения |
пг |
word |
no time |
no time |
no time |
Шейкерие сортування |
пг |
word |
no time |
no time |
no time |
204
Продовження таблиці 19
Тип методу |
Назва методу |
Оцінка |
Тип |
Growth |
Random |
Decrease |
Удоско- налені методи |
Метод Шелла |
л log л |
word |
no time |
no time |
no time |
Пірамідальне сортування |
л log л |
word |
no time |
no time |
no time |
|
Швидке сортування |
л log л |
word |
no time |
no time |
no time |
|
Сортуван- НЯ ПОСЛІ- довностей |
Пряме злиття |
л [log л] |
word |
no time |
no time |
no time |
Природне злиття |
л [logл] |
word |
no time |
no time |
no time |
|
Лінійне сорту- вання |
Сортування підрахунком |
л |
word |
no time |
no time |
no time |
Цифрове сортування |
л |
word |
no time |
no time |
no time |
|
N = 5000 |
||||||
Прямі методи |
Вибором |
пг |
word |
0,1648 |
0,1648 |
0,2198 |
Обміном |
п* |
word |
0,275 |
0,495 |
0,659 |
|
Включениям |
п2 |
word |
no time |
0,1648 |
0,385 |
|
hi |
Бінарне включения |
л2 |
word |
no time |
0,1099 |
0,275 |
Шейкерне сортування |
л2 |
word |
no time |
0,44 |
0,66 |
|
Удоско- валені методи |
Метод Шелла |
n]ogn |
word |
no time |
no time |
no time |
Пірамідальне сортування |
л log л |
word |
no time |
no time |
no time |
|
Швидке сортування |
nlogn |
word |
no time |
no time |
no time |
|
Сортуван- НЯ ПОСЛ1- довностей |
Пряме злиття |
л [logл] |
word |
no time |
no time |
no time |
Природне злиття |
л [log л] |
byte |
no time |
no time |
no time |
|
щ |
Сортування підрахунком |
л |
word |
no time |
no time |
no time |
Цифрове сортування |
я |
word |
no time |
no time |
no time |
|
N=10 000 |
||||||
Прямі методи |
Вибором |
л2 |
word |
0,659 |
0,659 |
0,879 |
Обміном |
л2 |
word |
1,044 |
2,088 |
2,582 |
|
Включениям |
л2 |
word |
no time |
0,714 |
1,538 |
205
Продовжепня таблиці 19
Тип методу |
Назва методу |
Оцінка |
Тип |
Growth |
Random |
Decrease |
Покрещен! методи |
Бінарне включения |
л2 |
word |
no time |
0,055 |
1,099 |
Шейкерне сортування |
л2 |
word |
по time |
1,648 |
2,692 |
|
Удоско- налені методи |
Метод Шелла |
nlogn |
word |
по time |
по time |
по time |
Шрамідальне сортування |
л log л |
word |
по time |
по time |
по time |
|
Швидке сортування |
nlogn |
word |
по time |
по time |
по time |
|
Сортуван- НЯ ПОСЛІ- довностей |
Пряме злиття |
n[\ogn] |
word |
по time |
по time |
по time |
Природне злиття |
n[\ogn] |
byte |
по time |
0,165 |
по time |
|
Лінійне сорту- вання |
Сортування підрахунком |
n |
word |
по time |
по time |
по time |
Цифрове сортування |
n |
word |
по time |
по time |
по time |
|
JV=15 000 |
||||||
Прямі методи |
Вибором |
л2 |
word |
1,484 |
1,484 |
1,978 |
Обміном |
n1 |
word |
2,418 |
4,78 |
5,934 |
|
Включениям |
n- |
word |
по time |
1,648 |
3,352 |
|
Покра- щені методи |
Бінарне включения |
n2 |
word |
по time |
1,209 |
2,418 |
Шейкерне сортування |
n2 |
word |
по time |
3,736 |
5,989 |
|
Удоско- налені методи |
Метод Шелла |
nlogn |
word |
по time |
по time |
по time |
Пірамідальне сортування |
nlogn |
word |
по time |
по time |
по time |
|
Швидке сортування |
nlogn |
word |
по time |
по time |
по time |
|
Сортуван-ня ПОСЛІ-довностей |
Пряме злиття |
л [logл] |
word |
по time |
по time |
по time |
Природне злиття |
л [log я] |
Масив не можна визначити |
||||
Лівійне сорту- вання |
Сортування підрахунком |
л |
word |
по time |
по time |
по time |
Цифрове сортування |
л |
Масив не можна визначити |
206
Продовження таблиці 19
Тип методу |
Назва методу |
Оціика |
Тип |
Growth |
Random |
Decrease |
N = 20 000 |
||||||
Прямі методи |
Вибором |
rr |
word |
2,692 |
2,692 |
3,516 |
Обміном |
л2 |
word |
4,34 |
8,407 |
10,38 |
|
Включениям |
л2 |
word |
no time |
2,967 |
5,989 |
|
Покрещен! методи |
Бінарне включения |
л2 |
word |
no time |
2,143 |
4,286 |
Шейкерне сортування |
л2 |
word |
no time |
6,593 |
10,55 |
|
Удоско-налені методи |
Метод Шелла |
л log л |
word |
no time |
no time |
0,055 |
Пірамідальне сортування |
л log л |
word |
no time |
no time |
no time |
|
Швидке сортування |
л log л |
word |
no time |
no time |
no time |
|
Сортуван- НЯ П0СЛ1- довностей |
Пряме злиття |
л [log л] |
byte |
no time |
0,055 |
0,055 |
Природне злиття |
л [log л] |
Масив не можна визначити |
||||
Лінійне сорту- вання |
Сортування підрахунком |
л |
word |
no time |
no time |
no time |
Цифроне сортування |
л |
Масив не можна визначити |
||||
N = 30 000 |
||||||
Прямі методи |
Вибором |
л2 |
word |
5,989 |
5,989 |
7,802 |
Обміном |
л2 |
word |
9,615 |
18,79 |
23,35 |
|
Включениям |
л2 |
word |
no time |
6,648 |
13,35 |
|
Покрещен! методи |
Бінарне включения |
л2 |
word |
no time |
4,89 |
9,67 |
Шейкерне сортування |
л2 |
word |
no time |
15,22 |
24,01 |
|
Удоско- налені методи |
Метод Шелла |
л log л |
byte |
0,055 |
0,055 |
0,055 |
Шрамідальне сортування |
л log л |
word |
0,055 |
0,055 |
0,055 |
|
Швидке сортування |
л log л |
word |
no time |
no time |
no time |
|
Сортуван- ня ПОСЛІ- довностей |
Пряме злиття |
л [log л] |
byte |
0,055 |
0,055 |
0,055 |
Природне злиття |
n[logn] |
Масив не можна визначити |
207
Закінчєння таблиці 19
Тип методу |
Назва методу |
Оцінка |
Тип |
Growth |
Random |
Decrease |
III |
Сортування підрахунком |
п |
word |
0,055 |
0,055 |
0,055 |
Цифрове сортування |
п |
Масив не можна визначити |
Проаналізуємо отримані результати тестування алгоритмів сортування за складністю їх виконання.
Серед усіх прямих методів можна визначити, що найгірше себе поводить метод обміну. Причому за результатами тестування цього методу дуже добре видно, якою є «вартість» опера-цій порівняння та обміну елементів масиву. Наприклад, для N - 30 000 час виконання алгоритму на впорядкованому за зростанням масиві становить 9,615 с, на випадковому — 18,79 с, на впорядкованому за спаданиям - 23,35 с. Це означав, що, впорядковуючи за зростанням уже впорядкований масив, алгоритм прямого обміну виконує лише операції порівняння всіх пар елементів і не виконує операцій обміну. Упорядковуючи за зростанням масив елементів, значения яких є випадковими числами, виконуються ті самі операції порівняння та близько половини елементів обмінюються своїми значениями. Під час упорядкування за зростанням масиву елементів, які були впо-рядковані за спаданням, відбуваються ті самі операції порів-няння та всі елементи міняються місцями. Це означав, що час виконання обміну значень елементів масиву вдвічі більший, ніж їх порівняння. Тому можна зробити висновок, що при складанні алгоритмів бажано уникати не тільки зайвих порів-нянь, а й у першу чергу зайвих обмінів!
Тестування методу включения доводить той факт, що він дуже чутливий до часткової впорядкованості вхідного масиву. Час упорядкування впорядкованого масиву не фіксується зов-сім, незалежно від кількості елементів масиву. А для впорядкованого за спаданням масиву (N - 30 000) час виконання алгоритму вдвічі більший (13,35 с), ніж для випадково за-даних значень елементів (6,648 с). Це пояснюється тим, що в упорядкованому за спаданням масиві жоден елемент не стоїть на своему місці щодо впорядкування за зростанням і для всіх цих елементів треба робити обміни місцями, а у випадковому масиві таких елементів є близько половини.
Метод выбору абсолютно нечутливий до часткової впоряд-кованості вхідного масиву. Він за однаковий час сортуе як повністю впорядкований масив, так і випадково сформований масив. Але в деяких випадках він досить непогано виглядае на фоні інших методів сортування.
•ZQS
Для покращених методів порівняльна картина така. Метод бінарного включения підтверджує свою ефективність порів-няно з методом шейкерного сортування. Слід зазначити, що обидва ці методи абсолютно не реагують на кількість елементів масиву у випадку, коли він уже впорядкований за зростанням: алгоритми обмежуються лише операціями порівняння і не ви-конують жодних обмінів. Час виконання на будь-яких масивах не фіксується. На двох інших масивах — випадковому та впо-рядкованому за спаданиям — відношення часу виконання ал-горитмів різне. Для методу бінарного включения час для цих двох варіантів масивів відноситься приблизно як 1:2, а для шейкерного сортування як 1:1,5. Це можна пояснити так: метод бінарного включения робить швидкий пошук місця положения елемента at у масиві av ..., о,., але з постійним рекурсивним поділом цього масиву навпіл, а метод шейкерного сортування на кожному кроці враховує те, що певні частини масиву на початку й у кінці вже впорядковані. Але загалом переваги методу бінарного включения перед методом шейкерного сортування незаперечні.
У свою чергу метод бінарного включения значно покращуе результати сортування на тих самих масивах порівняно з методом прямого включения, а метод шейкерного сортування -порівняно з методом обміну.
Тепер перейдемо до удосконалених методів. Лідером у цій групі, так само як і серед усіх методів загалом, є метод швидко-го сортування. 3 таблиці 19 видно, що для різних як за дов-жиною, так і за розташуванням елементів масивів не вдалося зафіксувати час виконання цього алгоритму. Друге місце за ним посідає метод пірамідального сортування: лише на масиві у 30 000 елементів фіксується зовсім незначний час виконання цього алгоритму, причому абсолютно однаковий для всіх трьох видів масивів - 0,055 с. Метод Шелла, який використовує принцип бар'єрів, посідає трете місце, оскільки з-за викорис-тання додаткової пам'яті виникають проблеми з обмеженням на розмірність масиву вхідних даних. Алгоритм, що реалізує метод Шелла без використання бар'єрів, виявився неефек-тивним за часом виконання. Наприклад, для N = 10 000 і для довільного розташування елементів масиву він дає 8,132 с.
Особливе місце, як і передбачалося, займають методи сортування послідовностей. Метод прямого злиття не дає мож-ливості зафіксувати час виконання алгоритму для масивів, значения елементів яких займае 2 байти (word або integer) i кількість яких не перевищує 15 000. Для N = 20 000 та N - 30 000 можна розмістити в пам'яті комп'ютера лише значения елементів типу byte, i час виконання алгоритму є дуже незначним, але все ж таки фіксується: 0,055 с. Використання
209
методу природного злиття є більш обмеженим із-за викорис-тання додаткових масивів. Уже для N = 5000 його можна вико-ристовувати лише для значень елементів масиву типу byte. А при ЛГ = 15 000 і більше неможливо розмістити в пам'яті комп'ютера навіть і такі елементи.
Можна зробити загальний висновок такий: для невеликих за кількістю елементів масивів методи сортування послідовностей не поступаються за ефективністю методу швидкого сортування.
Остання група методів - методи лінійного сортування. На основі даних таблиці 19 можна констатувати факт, що сортування підрахунком є дуже ефективним методом і не посту-пається наикращим наведеним вище методам. Є лише один недолік: обмеження на проміжок зміни значень елементів масиву, що сортуються. Ці обмеження повинні бути такими, щоб була можливість розмістити в пам'яті комп'ютера масив, де буде фіксуватися кількість різних елементів вхідного масиву. Розміщенням у пам'яті вхідного масиву можна знехту-вати. Тестування проводилося для значень елементів типу word. Метод цифрового сортування є не менш ефективним і підтверджує цей статус за результатами тестування. Однак негативним моментом є обмеженість використання цього методу з-за того, що він вимагає створення декількох додаткових масивів. Тому в таблиці, вже починаючи з N - 10 000, тестування цього методу стало неможливим.
На завершения аналізу всіх методів сортування можна зробити такі висновки:
-
наикращим методом при будь-яких значениях елементів масиву та їх кількості є метод швидкого сортування;
-
для кожного конкретного випадку значень елементів вхід-ного масиву можна застосувати й інші аналогічні за ефектив-ністю швидкому сортуванню методи: для майже впорядкова-них масивів; для масивів, значения елементів яких належать заданому проміжку, тощо;
— якщо реалізація деяких методів сортування викликає певні труднощі або сортування елементів в основному алгорит- мі використовується лише один раз, то можна зупинитися і на прямих методах, які на невеликих масивах демонструють до- сить пристойну швидкість виконання.
Запитання для самоконтролю
-
Як на апаратному рівні можна визначати час виконання программ?
-
Яким є порівняльний аналіз методів прямого сортування?
-
Яким є порівняльний аналіз покращених методів сортування?
-
Яким є порівняльний аналіз удосконалених методів сортування?
-
Яким є порівняльний аналіз методів сортування послідовнос-тей?
210
-
Яким є порівняльний аналіз методів лінійного сортування?
-
Які загальні висновки можна зробити, порівнюючи всі методи сортування масивів?
Завдання
-
Розробити програму, яка створює масив із п елементів, упорядкованих за зростанням.
-
Розробити програму, яка створює масив із п елементів, значения яких є випадковими.
-
Розробити програму, яка створює масив із п елементів, упорядкованих за спаданиям.
-
За допомогою програм, розроблених у пунктах 1-3, ство-рити відповідні масиви для 1000 < п < 10 000 та зберегти їх у файлах.
-
Протестувати алгоритми, що реалізують прямі методи сортування, на вхідних масивах, створених у пункті 4, фік-суючи час їх виконання. Порівняти отримані результати тесту-вання.
-
Протестувати алгоритми, що реалізують покращені методи сортування, на вхідних масивах, створених у пункті 4, фіксуючи час їх виконання. Порівняти отримані результати тесту вання.
-
Протестувати алгоритми, що реалізують удосконалені методи сортування, на вхідних масивах, створених у пункті 4, фіксуючи час їх виконання. Порівняти отримані результати тестування.
-
Протестувати алгоритми, що реалізують методи сортування послідовностей, на вхідних масивах, створених у пункті 4, фік-суючи час їх виконання. Порівняти отримані результати тестування.
-
Протестувати алгоритми, що реалізують методи лінійного сортування, на вхідних масивах, створених у пункті 4, фік-суючи час їх виконання. Порівняти отримані результати тестування.
10. Зробити письмовий аналіз завдань 5-9.
211