Алгоритм сортування — це алгоритм, що розв'язує задачу сортування, тобто здійснює впорядкування лінійного списку (масиву) елементів.
Термінологія
Термін сортування (англ. sorting) означає розділення елементів за певними ознаками (сортами) і не дуже точно описує поставлене завдання. Точнішою була б назва впорядкування (англ. ordering), але через перевантаженість слова «порядок» (англ. order) напрочуд різними значеннями[] ним не користуються.
Постановка задачі
Вхід алгоритму: послідовність з чисел
Вихід алгоритму: перестановка вхідної послідовності таким чином, що ( — перестановка послідовності чисел ).
Вхідна послідовність найчастіше представляється у вигляді n-елементного масиву, хоча може мати й інше представлення, наприклад, у вигляді зв'язного списку.
- Вхідна послідовність: (5, 6, 1, 8, 5, 7, 4)
- Вихідна послідовність: (1, 4, 5, 5, 6, 7, 8)
Структури даних
На практиці елементи, що впорядковуються, рідко бувають просто числами. Набагато частіше кожен такий елемент є записом (англ. record). У кожному записі є ключ (англ. key), за яким, власне і здійснюється впорядкування; водночас є й інша супутня інформація. Алгоритм сортування на практиці має бути реалізований так, щоб разом із ключами переміщати і супутню інформацію. Якщо кожен запис містить супутню інформацію великого обсягу, то з метою звести до мінімуму переписування великих обсягів інформації, впорядкування відбувається не в самому масиві елементів, а в масиві вказівників на елементи.
Сам метод сортування не залежить від того, чи впорядковуються тільки числа, чи також і супутня інформація, тому при описі алгоритмів для простоти припускають, що елементи є числами.
Класифікація алгоритмів сортування
Для алгоритму сортування (як і для будь-якого іншого сучасного алгоритму) основними характеристиками є:
- Час, необхідний на впорядкування n-елементного масиву. Для значної кількості алгоритмів середній і найгірший час впорядкування n-елементного масиву є — це пов'язано з тим, що в них передбачені перестановки елементів, що стоять поряд (різниця між індексами елементів не перевищує деякого заданого числа). Такі алгоритми зазвичай є стабільними, хоча і не ефективними для великих масивів. Інший клас алгоритмів здійснює впорядкування за час . В цих алгоритмах використовується можливість обміну елементів, що знаходяться на будь-якій відстані один від одного.
- Необхідність додаткової пам'яті для сортування. Зазвичай необхідно O(1) пам'яті.
- Стабільність (англ. Stability) — стабільне сортування не змінює взаємного розташування елементів з однаковими ключами.
Теорема про найкращий час сортування
Якщо алгоритм сортування у своїй роботі спирається тільки на операції порівняння двох об'єктів (≤) і не враховує жодної додаткової інформації про елементи, то він не може впорядкувати масив елементів швидше ніж за в найгіршому випадку.
Доведення
На кожному кроці алгоритм проводить одне порівняння, результатом якого є один з двох варіантів:
Подальші дії алгоритм робитиме залежно від результату порівняння. Отже, всю роботу алгоритму можна представити у вигляді бінарного дерева, в листах якого лежать можливі перестановки вхідного масиву.
Отже, дерево має листів, а висота дерева є . Час роботи в найгіршому випадку пропорційний висоті дерева:
.
Ці швидкі алгоритми використовуються в реальних задачах. Проте більшість із них нестабільні. Стабільні алгоритми, що працюють за час , потребують додаткової пам'яті.
Відомий стабільний алгоритм сортування, що не вимагає додаткової пам'яті, працює за час .
Ще один клас алгоритмів використовує у своїй роботі деяку додаткову інформацію про елементи, що впорядковуються (наприклад, те що вони є різними числами в деякому діапазоні). Завдяки цьому вони працюють за час .
Відомі алгоритми сортування
За час :
- Сортування вибором — (англ. Selection sort) — пошук найменшого або найбільшого елемента і переміщення його в початок або кінець впорядкованого списку.
- Сортування вставкою (включенням) — (англ. Insertion sort) — визначаємо місце, де поточний елемент повинен знаходитися в упорядкованому списку, і вставляємо його туди.
- Сортування обміном (сортування бульбашкою, англ. Bubble sort) — для кожної пари індексів проводиться обмін, якщо елементи розташовані не по порядку.
- Сортування методом бінарної вставки
За час :
- Плавне сортування (англ. Smoothsort)
- Пірамідальне сортування
- Швидке сортування
- Сортування злиттям
- Timsort
За час з використанням додаткової інформації про елементи:
За час :
За час :
Див. також
У Вікіджерелах є Приклади реалізації алгоритмів сортування |
Література
- Дональд Кнут. Sorting and Searching // The Art of Computer Programming. — 3rd. — Massachusetts : Addison–Wesley, 1998. — Т. 3. — 780 с. — .(англ.)
- Т. Кормен; Ч. Лейзерсон; Р. Рівест; К. Стайн (2009) [1990]. Section II. Сортування і порядкові статистики. Вступ до алгоритмів (вид. 3rd). MIT Press і McGraw-Hill. ISBN .
Посилання
- Алгоритм сортування [ 25 лютого 2022 у Wayback Machine.] // ВУЕ
- Веблог «Штучний Інтелект», .
- А. Б. Ставровський, «Посібник з програмування для студентів 1 курсу факультету кібернетики» [ 16 липня 2007 у Wayback Machine.],
- Розділ 17. Пошук, Сортування та Поняття Складності [ 17 березня 2007 у Wayback Machine.]
Це незавершена стаття про алгоритми. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Algoritm sortuvannya ce algoritm sho rozv yazuye zadachu sortuvannya tobto zdijsnyuye vporyadkuvannya linijnogo spisku masivu elementiv TerminologiyaTermin sortuvannya angl sorting oznachaye rozdilennya elementiv za pevnimi oznakami sortami i ne duzhe tochno opisuye postavlene zavdannya Tochnishoyu bula b nazva vporyadkuvannya angl ordering ale cherez perevantazhenist slova poryadok angl order naprochud riznimi znachennyami dzherelo nim ne koristuyutsya Postanovka zadachiVhid algoritmu poslidovnist z n displaystyle n chisel a1 a2 an displaystyle a 1 a 2 dots a n Vihid algoritmu perestanovka ap 1 ap 2 ap n displaystyle a pi 1 a pi 2 dots a pi n vhidnoyi poslidovnosti takim chinom sho ap 1 ap 2 ap n displaystyle a pi 1 leq a pi 2 leq dots leq a pi n p displaystyle pi perestanovka poslidovnosti chisel 1 n displaystyle 1 n Vhidna poslidovnist najchastishe predstavlyayetsya u viglyadi n elementnogo masivu hocha mozhe mati j inshe predstavlennya napriklad u viglyadi zv yaznogo spisku Vhidna poslidovnist 5 6 1 8 5 7 4 Vihidna poslidovnist 1 4 5 5 6 7 8 Strukturi danihDokladnishe Struktura danih Na praktici elementi sho vporyadkovuyutsya ridko buvayut prosto chislami Nabagato chastishe kozhen takij element ye zapisom angl record U kozhnomu zapisi ye klyuch angl key za yakim vlasne i zdijsnyuyetsya vporyadkuvannya vodnochas ye j insha suputnya informaciya Algoritm sortuvannya na praktici maye buti realizovanij tak shob razom iz klyuchami peremishati i suputnyu informaciyu Yaksho kozhen zapis mistit suputnyu informaciyu velikogo obsyagu to z metoyu zvesti do minimumu perepisuvannya velikih obsyagiv informaciyi vporyadkuvannya vidbuvayetsya ne v samomu masivi elementiv a v masivi vkazivnikiv na elementi Sam metod sortuvannya ne zalezhit vid togo chi vporyadkovuyutsya tilki chisla chi takozh i suputnya informaciya tomu pri opisi algoritmiv dlya prostoti pripuskayut sho elementi ye chislami Klasifikaciya algoritmiv sortuvannyaDlya algoritmu sortuvannya yak i dlya bud yakogo inshogo suchasnogo algoritmu osnovnimi harakteristikami ye Chas neobhidnij na vporyadkuvannya n elementnogo masivu Dlya znachnoyi kilkosti algoritmiv serednij i najgirshij chas vporyadkuvannya n elementnogo masivu ye O n2 displaystyle O n 2 ce pov yazano z tim sho v nih peredbacheni perestanovki elementiv sho stoyat poryad riznicya mizh indeksami elementiv ne perevishuye deyakogo zadanogo chisla Taki algoritmi zazvichaj ye stabilnimi hocha i ne efektivnimi dlya velikih masiviv Inshij klas algoritmiv zdijsnyuye vporyadkuvannya za chas O nlogn displaystyle O n log n V cih algoritmah vikoristovuyetsya mozhlivist obminu elementiv sho znahodyatsya na bud yakij vidstani odin vid odnogo Neobhidnist dodatkovoyi pam yati dlya sortuvannya Zazvichaj neobhidno O 1 pam yati Stabilnist angl Stability stabilne sortuvannya ne zminyuye vzayemnogo roztashuvannya elementiv z odnakovimi klyuchami Teorema pro najkrashij chas sortuvannyaYaksho algoritm sortuvannya u svoyij roboti spirayetsya tilki na operaciyi porivnyannya dvoh ob yektiv i ne vrahovuye zhodnoyi dodatkovoyi informaciyi pro elementi to vin ne mozhe vporyadkuvati masiv elementiv shvidshe nizh za O nlogn displaystyle O n log n v najgirshomu vipadku Dovedennya Na kozhnomu kroci algoritm provodit odne porivnyannya rezultatom yakogo ye odin z dvoh variantiv A B displaystyle A leq B A gt B displaystyle A gt B Podalshi diyi algoritm robitime zalezhno vid rezultatu porivnyannya Otzhe vsyu robotu algoritmu mozhna predstaviti u viglyadi binarnogo dereva v listah yakogo lezhat mozhlivi perestanovki vhidnogo masivu Otzhe derevo maye n displaystyle n listiv a visota dereva ye log n displaystyle log n Chas roboti v najgirshomu vipadku proporcijnij visoti dereva O log n O log 2pn ne n O nlogn displaystyle O log n O left log left sqrt 2 pi n left frac n e right n right right O n log n Ci shvidki algoritmi vikoristovuyutsya v realnih zadachah Prote bilshist iz nih nestabilni Stabilni algoritmi sho pracyuyut za chas O nlogn displaystyle O n log n potrebuyut O n displaystyle O n dodatkovoyi pam yati Vidomij stabilnij algoritm sortuvannya sho ne vimagaye dodatkovoyi pam yati pracyuye za chas O nlog2n displaystyle O n log 2 n She odin klas algoritmiv vikoristovuye u svoyij roboti deyaku dodatkovu informaciyu pro elementi sho vporyadkovuyutsya napriklad te sho voni ye riznimi chislami v deyakomu diapazoni Zavdyaki comu voni pracyuyut za chas O n displaystyle O n Vidomi algoritmi sortuvannyaZa chas O n2 displaystyle O n 2 Sortuvannya viborom angl Selection sort poshuk najmenshogo abo najbilshogo elementa i peremishennya jogo v pochatok abo kinec vporyadkovanogo spisku Sortuvannya vstavkoyu vklyuchennyam angl Insertion sort viznachayemo misce de potochnij element povinen znahoditisya v uporyadkovanomu spisku i vstavlyayemo jogo tudi Sortuvannya obminom sortuvannya bulbashkoyu angl Bubble sort dlya kozhnoyi pari indeksiv provoditsya obmin yaksho elementi roztashovani ne po poryadku Sortuvannya metodom binarnoyi vstavki Za chas O nlogn displaystyle O n log n Plavne sortuvannya angl Smoothsort Piramidalne sortuvannya Shvidke sortuvannya Sortuvannya zlittyam Timsort Za chas O n displaystyle O n z vikoristannyam dodatkovoyi informaciyi pro elementi Sortuvannya pidrahunkom Sortuvannya za rozryadami Sortuvannya komirkami Za chas O nlog2n displaystyle O n log 2 n Sortuvannya zlittyam modifikovane Sortuvannya Shella Za chas O nn displaystyle O nn Vipadkove sortuvannyaDiv takozhU Vikidzherelah ye Prikladi realizaciyi algoritmiv sortuvannyaSpisok algoritmiv LiteraturaDonald Knut Sorting and Searching The Art of Computer Programming 3rd Massachusetts Addison Wesley 1998 T 3 780 s ISBN 0 201 89685 0 angl T Kormen Ch Lejzerson R Rivest K Stajn 2009 1990 Section II Sortuvannya i poryadkovi statistiki Vstup do algoritmiv vid 3rd MIT Press i McGraw Hill ISBN 0 262 03384 4 PosilannyaAlgoritm sortuvannya 25 lyutogo 2022 u Wayback Machine VUE Veblog Shtuchnij Intelekt A B Stavrovskij Posibnik z programuvannya dlya studentiv 1 kursu fakultetu kibernetiki 16 lipnya 2007 u Wayback Machine Rozdil 17 Poshuk Sortuvannya ta Ponyattya Skladnosti 17 bereznya 2007 u Wayback Machine Ce nezavershena stattya pro algoritmi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi