Розділ IV. АЛГОРИТМИ
Пояснимо коротко, чому та сама функція qsort() не забезпечує універсального розв'язку всіх завдань сортування. По-перше, функ- цію qsort() неможливо застосувати в усіх ситуаціях – вона сортує лише масиви в пам'яті, але не може сортувати дані, що зберігаються, наприклад, у зв'язаних списках. По-друге, qsort() – параметризована функція, завдяки чому вона може обробляти широкий набір типів даних, але робить це повільніше, ніж еквівалентна функція, розрахо- вана на якийсь один фіксований тип даних. Незважаючи на те, що зазвичай оптимальним є швидке сортування, воно не є кращим у всіх випадках. Наприклад, при сортуванні дуже малих списків (менше 100 елементів) додатковий обсяг роботи, пов'язаний із рекурсивними викликами швидкого сортування, може нівелювати його переваги. У таких рідких випадках один із простих методів сортування (навіть метод бульбашки) може працювати швидше. До того ж, якщо відомо, що список уже майже впорядкований або є вимоги щодо стійкості алгоритму, то якийсь інший алгоритм може виявитися прийнятнішим за швидке сортування.
*Література для CР: алгоритми сортування й пошуку – [8, 60, 65, 77, 95, 125].
Контрольні запитання та вправи
1.Сформулювати задачі пошуку й сортування кортежів.
2.Що таке ключі елементів і яка їхня роль у задачах пошуку й сортування?
3 Що таке таблиця й рядок таблиці?
4.Що таке ключове поле рядка?
5.Сформулювати алгоритм послідовного пошуку.
6.Що таке бінарний пошук?
7.Порівняти часову складність послідовного й бінарного пошуків.
8.Що таке бульбашкове сортування?
9.Що таке сортування вставленням?
10.Порівняти часову складність бульбашкового сортування й сортування вставленням.
11.Що таке злиття двох послідовностей?
12.Сформулювати алгоритм сортування злиттям. Яка його ча- сова складність?
13.Сформулювати алгоритм швидкого сортування.
14.Які переваги й недоліки застосування функція qsort()?
15.Порівняти часову складність сортування злиттям і швидкого сортування.