Loading AI tools
З Вікіпедії, вільної енциклопедії
Алгоритм сортування — це алгоритм, що розв'язує задачу сортування, тобто здійснює впорядкування лінійного списку (масиву) елементів.
Термін сортування (англ. sorting) означає розділення елементів за певними ознаками (сортами) і не дуже точно описує поставлене завдання. Точнішою була б назва впорядкування (англ. ordering), але через перевантаженість слова «порядок» (англ. order) напрочуд різними значеннями[джерело?] ним не користуються.
Вхід алгоритму: послідовність з чисел
Вихід алгоритму: перестановка вхідної послідовності таким чином, що ( — перестановка послідовності чисел ).
Вхідна послідовність найчастіше представляється у вигляді n-елементного масиву, хоча може мати й інше представлення, наприклад, у вигляді зв'язного списку.
На практиці елементи, що впорядковуються, рідко бувають просто числами. Набагато частіше кожен такий елемент є записом (англ. record). У кожному записі є ключ (англ. key), за яким, власне і здійснюється впорядкування; водночас є й інша супутня інформація. Алгоритм сортування на практиці має бути реалізований так, щоб разом із ключами переміщати і супутню інформацію. Якщо кожен запис містить супутню інформацію великого обсягу, то з метою звести до мінімуму переписування великих обсягів інформації, впорядкування відбувається не в самому масиві елементів, а в масиві вказівників на елементи.
Сам метод сортування не залежить від того, чи впорядковуються тільки числа, чи також і супутня інформація, тому при описі алгоритмів для простоти припускають, що елементи є числами.
Для алгоритму сортування (як і для будь-якого іншого сучасного алгоритму) основними характеристиками є:
Якщо алгоритм сортування у своїй роботі спирається тільки на операції порівняння двох об'єктів (≤) і не враховує жодної додаткової інформації про елементи, то він не може впорядкувати масив елементів швидше ніж за в найгіршому випадку.
На кожному кроці алгоритм проводить одне порівняння, результатом якого є один з двох варіантів:
Подальші дії алгоритм робитиме залежно від результату порівняння. Отже, всю роботу алгоритму можна представити у вигляді бінарного дерева, в листах якого лежать можливі перестановки вхідного масиву.
Отже, дерево має листів, а висота дерева є . Час роботи в найгіршому випадку пропорційний висоті дерева:
.
Ці швидкі алгоритми використовуються в реальних задачах. Проте більшість із них нестабільні. Стабільні алгоритми, що працюють за час , потребують додаткової пам'яті.
Відомий стабільний алгоритм сортування, що не вимагає додаткової пам'яті, працює за час .
Ще один клас алгоритмів використовує у своїй роботі деяку додаткову інформацію про елементи, що впорядковуються (наприклад, те що вони є різними числами в деякому діапазоні). Завдяки цьому вони працюють за час .
За час :
За час :
За час з використанням додаткової інформації про елементи:
За час :
За час :
Це незавершена стаття про алгоритми. Ви можете допомогти проєкту, виправивши або дописавши її. |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.