Алгоритм сортування — це алгоритм, що розв'язує задачу сортування, тобто здійснює впорядкування лінійного списку (масиву) елементів.
Термінологія
Термін сортування (англ. 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
За час з використанням додаткової інформації про елементи:
За час :
За час :
Література
- Thimas H. Cormen; Charles E. Leiserson; Ronald L. Rivest; Clifford Stein. Introduction to Algorithms (2nd ed.) The MIT Press. .
Див. також
У Вікіджерелах є Приклади реалізації алгоритмів сортування |
Посилання
- Алгоритм сортування [ 25 лютого 2022 у Wayback Machine.] // ВУЕ
- Веблог «Штучний Інтелект», .
- А. Б. Ставровський, «Посібник з програмування для студентів 1 курсу факультету кібернетики» [ 16 липня 2007 у Wayback Machine.], Розділ 17. Пошук, Сортування та Поняття Складності [ 17 березня 2007 у Wayback Machine.]
Це незавершена стаття про алгоритми. Ви можете проєкту, виправивши або дописавши її. |
Ця стаття потребує додаткових для поліпшення її . (грудень 2016) |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, 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 a 1 a 2 a n displaystyle a 1 a 2 dots a n Vihid algoritmu perestanovka a p 1 a p 2 a p n displaystyle a pi 1 a pi 2 dots a pi n vhidnoyi poslidovnosti takim chinom sho a p 1 a p 2 a p 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 n 2 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 n log n 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 n log n 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 2 p n n e n O n log n 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 n log n 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 n log 2 n 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 n 2 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 n log n 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 n log 2 n displaystyle O n log 2 n Sortuvannya zlittyam modifikovane Sortuvannya Shella Za chas O n n displaystyle O nn Vipadkove sortuvannyaLiteraturaThimas H Cormen Charles E Leiserson Ronald L Rivest Clifford Stein Introduction to Algorithms 2nd ed The MIT Press ISBN 0 07 013151 1 Div takozhU Vikidzherelah ye Prikladi realizaciyi algoritmiv sortuvannya Spisok algoritmiv 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 Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno gruden 2016