Цілочисельне сортування в інформатиці — це алгоритмічна задача сортування набору значень за числовими ключами, кожен з яких є цілим числом. Алгоритми, призначені для цілочисельного сортування, також можуть часто застосовуватися до задач сортування, в яких ключі — числа з рухомою комою, раціональні числа або текстові рядки. В багатьох випадках можливість виконання цілочисельної арифметики з ключами дозволяє цілочисельним алгоритмам сортування виконуватись швидше, ніж алгоритмам сортування порівняннями, але це залежить від того, які операції дозволені в моделі обчислень і наскільки великими можуть бути цілі числа.
Широко використовуються практичні алгоритми цілочисельного сортування, такі як сортування Діріхле (англ. Pigeonhole), сортування підрахунком і сортування за розрядами. Інші алгоритми цілочисельного сортування, з меншими оцінками найгіршого випадку, не вважаються практичними для комп'ютерних архітектур, які мають 64 й менше бітів на слово. Відомо багато таких алгоритмів, швидкодія яких залежить від комбінації кількості об'єктів, що підлягають сортуванню, кількості бітів на ключ і кількості бітів на слово у комп'ютері, який виконує алгоритм сортування.
Загальні міркування
Моделі обчислень
Оцінки часу для алгоритмів цілочисельного сортування зазвичай залежать від трьох параметрів: число n — кількість значень, що підлягають сортуванню, величина K — найбільший можливий ключ для сортування та число w — кількість бітів, які можуть бути представлені в одному машинному слові комп'ютера, на якому повинен виконуватися алгоритм. Як правило, передбачається, що w ≥ log2(max (n, K)); тобто, машинні слова достатньо великі, щоб представляти індекс у послідовності вхідних даних, а також досить великі, щоб представляти єдиний ключ.
Алгоритми цілочисельного сортування зазвичай розроблені для роботи c моделями обчислень в [en] (англ. Pointer machine), або в машині з довільним доступом. Основна відмінність між цими двома моделями полягає в тому, як пам'ять може бути адресована. Машина довільного доступу дозволяє будь-яке значення, яке зберігається в регістрі, використовувати як адресу операцій зчитування та запису пам'яті, з одиничною вартістю операції. Це дозволяє швидко реалізовувати певні складні операції над даними за допомогою пошуку в таблиці. З іншого боку, в моделі машини вказівника операції зчитування і запису використовують адреси, що зберігаються в вказівниках, і не дозволяється виконувати арифметичні операції над цими вказівниками. В обох моделях можна додавати значення даних, виконувати побітові булеві операції і двійкові операції зсуву над ними за одиницю часу на операцію. Проте, різні алгоритми цілочисельного сортування роблять різні припущення щодо того, чи має цілочисельне множення як операція одиничну вартість. Також розглядаються інші більш спеціалізовані моделі обчислень, такі як паралельна машина з довільним доступом. Andersson, Milterse та Thorup, (1999) показали, що в деяких випадках множення або пошук в таблицях, які необхідні для деяких алгоритмів цілочисельного сортування, можуть бути замінені спеціальними операціями, які легше реалізуються в апаратних засобах, але зазвичай не доступні на комп'ютерах загального призначення. Thorup, (2003) покращив це, показавши, як замінити ці спеціальні операції на інструкції з маніпулювання [en], які вже доступні на процесорах Pentium.
Сортування в порівнянні з цілочисельною чергою з пріоритетом
Черга з пріоритетами (англ. priority queue) — це структура даних для збереження колекції елементів з числовими пріоритетами, що має операції пошуку та видалення елемента з мінімальним значенням пріоритету. Черги з пріоритетом, засновані на порівняннях, такі як бінарна купа, потребують логарифмічного часу на оновлення, але такі структури, як дерево ван Емде Боаса, або [en] (англ. bucket queue), можуть бути швидшими для вхідних даних, у яких пріоритетами є малі цілі числа. Ці структури даних можуть бути використані в алгоритмі сортування вибором, який сортує набір елементів шляхом багаторазового пошуку і видалення найменшого елемента з колекції та поверненням елементів в порядку, в якому вони були знайдені. Черга з пріоритетами може використовуватися в цьому алгоритмі для збереження колекції елементів і час для цього алгоритму, для колекції з n елементів, може бути обмеженим часом для ініціалізації черги пріоритету, а потім виконуванням n операцій пошуку і видалення. Наприклад, використання бінарної купи, як черги пріоритету у сортуванні вибором, призводить до алгоритму пірамідального сортування, алгоритму, на основі порівнянь, який займає час O(n log n). Замість цього, якщо використовувати [en] в сортуванні вибором, це призводить до форми сортування Діріхле, а використання дерева ван Емде Боаса, або інших цілочисельних черг з пріоритетами призводить до інших алгоритмів швидкого сортування.
Замість використання цілочисельної черги з пріоритетами в алгоритмі сортування, можна використовувати алгоритми цілочисельного сортування, як підпрограми в структурі даних цілочисельної черги з пріоритетами. Thorup, (2007) використовував цю ідею, щоб показати, що, якщо можливо виконати цілочисельне сортування за час T(n) на ключ, тоді однакове обмеження часу застосовується до часу на операцію вставки, або видалення в структурі даних черги з пріоритетами. Скорочення Торупа (англ. Thorup's) є складним і передбачає наявність або швидких операцій множення, або пошуку в таблиці, але він також надає альтернативну чергу з пріоритетами, яка використовує тільки операції додавання та булеві операції з часом T(n) + T(log n) + T(log log n) + ... за операцію — максимальне множення часу на повторний логарифм.
Використовність
Класичні алгоритми цілочисельного сортування, такі як сортування Діріхле (англ. Pigeonhole), сортування підрахунком і сортування за розрядами широко використовуються та є досить практичними. Більшість подальших досліджень алгоритмів цілочисельного сортування менше зосереджувалася на практичності та більше на теоретичних вдосконаленнях в [en], і алгоритми, що виходять з цього напрямку дослідження, не вважаються практичними для сучасних 64-бітових архітектур комп'ютерів, хоча експерименти показали, що деякі з цих методів можуть бути поліпшенням у сортуванні за розрядами для даних з 128 або більше бітами на ключ. Крім того, для великих наборів даних, використання моделей з майже довільним [en] для багатьох алгоритмів цілочисельного сортування може завадити їх порівнянню зі схожими алгоритмами сортування, які були розроблені з орієнтацією на використання ієрархії пам'яті.
Цілочисельне сортування є одним з шести тестів продуктивності дискретної математики агентства передових оборонних дослідницьких проектів (DARPA) (англ. Defense Advanced Research Projects Agency) для [en] та одним з одинадцяти тестів продуктивності у комплекті тестів NAS Parallel Benchmarks.
Практичні алгоритми
Сортування Діріхле або сортування підрахунком можуть сортувати n елементів даних, що мають ключі в діапазоні від 0 до K − 1, за час O(n + K). У сортуванні Діріхле (часто називають сортуванням комірками), вказівники на елементи даних розподілені по таблиці комірок, що представлені як типи даних, такі як зв'язані списки, використовуючи ключі як індекси в таблиці. Далі всі елементи об'єднуються разом, щоб сформувати вихідний список. Сортування підрахунками використовує таблицю лічильників замість таблиці комірок, щоб визначити кількість елементів з кожним ключем. Далі використовується обчислення [en] для визначення діапазону позицій у відсортованих вихідних даних, на якому повинні бути розміщені значення з кожним ключем. Нарешті, у другому проході над вхідними даними, кожен елемент переміщується до позиції ключа у вихідному масиві. Обидва алгоритми включають тільки прості цикли над вхідними даними (за час O(n)) та над множиною можливих ключів (за час O(K)), даючи загальний час O(n + K).
Сортування за розрядами — це алгоритм сортування, який працює для більших ключів, ніж сортування Діріхле, або сортування підрахунками, шляхом виконання декількох проходів над даними. При кожному проході вхідні дані сортуються використовуючи лише частину ключів, використовуючи інший алгоритм сортування (такий як сортування Діріхле, або сортування підрахунками), які підходять лише для малих ключів. Щоб розбити ключі на частини, алгоритм сортування за розрядами обчислює позиційну систему для кожного ключа, відповідно до деякого обраного розряду; далі, частина ключа, що використовується для i-го проходження алгоритму э i-ю цифрою у позиційній системі для повного ключа, починаючи з найменш значущої, та переходячи на найбільш значущої цифри. Для того, щоб цей алгоритм працював коректно, алгоритм сортування, що використовується при кожному проході над даними, повинен бути стабільним: елементи з однаковими цифрами не повинні змінювати позиції один з одним. Для найбільшої ефективності розряд повинен бути вибраний близько до кількості елементів даних, n. Крім того, використання ступенів двійки близьких до n як розряду, дозволяє ключам для кожного проходу бути швидко обчисленими, використовуючи тільки швидкі бінарні операції зсуву і маски. За допомогою цих варіантів, а також за допомогою сортування Діріхле або сортування підрахунками як базового алгоритму, сортування за розрядами може відсортувати n елементів даних які мають ключі в діапазоні від 0 до K − 1 за час O(n logn K).
Теоретичні алгоритми
Було розроблено багато цілочисельних алгоритмів сортування, теоретичний аналіз яких показує, що вони ведуть себе краще, ніж сортування порівняннями, сортування Діріхлє, або сортування за розрядами для великих комбінацій параметрів, що визначають кількість елементів, що підлягають сортуванню, діапазон ключів і розмір машинного слова. Який алгоритм має кращу продуктивність залежить від значень цих параметрів. Однак, всупереч їхнім теоретичним перевагам, ці алгоритми не є поліпшенням для типових діапазонів цих параметрів, які виникають у практичних задачах сортування.
Алгоритми для маленьких ключів
Дерево ван Емде Боаса може використовуватися, як черга з пріоритетом для сортування набору з n ключів, кожен в діапазоні від 0 до K − 1, за час O(n log log K). Це є теоретичним поліпшенням порівняно з сортуванням за розрядами, коли K є достатньо великим. Однак для того, щоб використовувати дерево ван Емде Боаса, потрібно або безпосередньо адресовану пам'ять з K слів, або змоделювати його за допомогою геш-таблиці, зменшуючи простір до лінійного, але алгоритм стає випадковим. Ще однією чергою з пріоритетом з подібною продуктивністю (включаючи необхідність випадковості у вигляді геш-таблиць) є [en] Willard, (1983). Більш складний метод з подібною особливістю і з кращими теоретичними характеристиками розробили Kirkpatrick та Reisch, (1984). Вони зауважили, що кожен прохід сортування за розрядами може бути інтерпретований, як метод скорочення діапазону, який за лінійний час зменшує максимальний розмір ключа на коефіцієнт n; замість цього, їх метод зменшує розмір ключа до квадратного кореня з попереднього значення (зменшивши удвічі кількість бітів, необхідних для представлення ключа), знову за лінійний час. Як і в сортуванні за розрядами, вони інтерпретують ключі, як двозначні числа за [en] b, що становить приблизно √K. Потім вони групують елементи, які необхідно відсортувати, у комірки (англ. buckets) відповідно до їх старших цифр, у лінійний час, використовуючи, або велику, але неініціалізовану пам'ять з прямим доступом, або геш-таблицю. У кожної комірки є представник, елемент в комірці з найбільшим ключем; потім вони сортують список елементів, використовуючи старші цифри для представників і молодші цифри для не представників, як ключі. Групуючи елементи з цього списку знову в комірки, кожна комірка може бути розташована у відсортованому порядку, і, витягаючи представників з відсортованого списку, комірки можуть бути об'єднані у відсортованому порядку. Таким чином, за лінійний час проблема сортування зводиться до іншої рекурсивної задачі сортування, в якій ключі значно менші, ніж квадратний корінь з їхньої попередньої величини. Повторення цього зменшення діапазону, поки ключі достатньо малі, щоб сортувати комірками, призводить до алгоритму з часом роботи O(n log logn K).
Складний випадковий алгоритм Han та Thorup, (2002) в моделі обчислення [en] дозволяє ці часові межі скорочувати ще далі, до O(n√log log K).
Алгоритми для великих слів
Алгоритм цілочисельного сортування вважається неконсервативним, якщо він вимагає розмір слова w, що значно перевищує log max(n, K). Як екстремальний екземпляр, якщо w ≥ K, і всі ключі різні, то набір ключів може бути відсортований за лінійний час, представлений як бітова мапа, з бітом 1 у положенні i, коли i є одним з отриманих ключів, а потім повторно видаляється найменш важливий біт. Неконсервативний алгоритм сортування Albers та Hagerup, (1997) використовує підпрограму, засновану на [en] [en], для об'єднання двох сортованих послідовностей ключів, кожна з яких досить коротка, щоб бути упакованими в одне машинне слово. Вхідні дані до запакованого алгоритму сортування — послідовність елементів, що зберігаються по одному слову, перетворюється в упаковану форму — послідовність слів, кожна з яких містить кілька елементів у відсортованому порядку, використовуючи цю підпрограму повторно, щоб подвоїти кількість елементів, упакованих у кожне слово. Після того, як послідовність набула упаковану форму, Albers and Hagerup використовують форму сортування злиттям, щоб відсортувати її; коли дві послідовності об'єднуються у довшу послідовність, таке ж саме бітонічне сортування може бути використано для повторного вилучення запакованих слів, що складаються з найменших залишившихся елементів двох послідовностей. Цей алгоритм отримує достатньо прискорення зі свого упакованого подання, щоб відсортувати свої вхідні дані за лінійний час коли це можливо для одного слова, що містить Ω(log n log log n) ключів, тобто, коли log K log n log log n ≤ cw для деякої константи c > 0.
Алгоритми для декількох елементів
Сортування Діріхле, сортування підрахунком та дерево ван Емде Боаса працюють гарно, коли розмір ключів невеликий; для досить великих ключів вони стають повільнішими, ніж алгоритми сортування порівняннями. Однак, якщо розмір ключа або розмір слова дуже великі щодо кількості елементів (або еквівалентні, коли кількість елементів невелика), може знову стати можливим сортувати швидко, використовуючи різні алгоритми, які використовують переваги паралелізму, здатного виконувати арифметичні операції над великими словами.
Один із перших результатів у цьому напрямку отримали Ajtai, Fredman та Komlós, (1984) за допомогою моделі обчислень [en] (штучна модель, в якій складність алгоритму вимірюється тільки розміром доступної пам'яті, яку він використовує). Спираючись на свою роботу, Fredman та Willard, (1994) описали дві структури даних, Q-купу та атомну купу, які реалізуються на машині довільного доступу. Q-купа є біто-паралельною версією двійкового префіксного дерева і дозволяє як операціям пріоритетних черг, так і наступним та попереднім запитам виконуватися за постійний час для наборів з O((log N)1/4) елементів, де N ≤ 2w — це розмір попередньо обчислених таблиць, необхідних для реалізації структури даних. Атомна купа — це Б-дерево, у якому кожен вузол дерева представлено у вигляді Q-купи, це дозволяє виконувати операції черг з пріоритетами (і, отже, сортування) за постійний час для наборів з (log N)O(1) елементів.
Andersson та ін., (1998) показали рандомізований алгоритм, який називається сортуванням сигнатурами, що дозволяє сортувати за лінійний час набори елементів кількістю до 2O((log w)1/2 − ε) елементів, при умові будь-якої константи ε > 0. Як і в алгоритмі Кіркпатріка та Рейша, вони виконують зменшення діапазону, використовуючи представлення ключів, як числа з основою b для ретельного вибору b. Їх алгоритм зменшення діапазону замінює кожну цифру сигнатурою, яка є хешованим значенням з O(log n) бітами, так що різні значення цифр мають різні підписи. Якщо n є достатньо малим, числа, утворені цим процесом заміни, будуть значно меншими, ніж вихідні ключі, дозволяючи неконсервативному упакованому алгоритму сортування Albers та Hagerup, (1997) сортувати замінені числа за лінійний час. З відсортованого списку замінених чисел можна сформувати префіксне дерево ключів у лінійний час, та діти кожного вузла у цьому дереві можуть бути рекурсивно відсортовані, використовуючи тільки ключі розміру b, після чого обхід дерева дає відсортований порядок елементів.
Транс-дихотомічні алгоритми
Fredman та Willard, (1993) представили [en] аналізу для алгоритмів сортування цілих чисел у якій нічого не передбачається про діапазон цілочисельних ключів та має бути пов'язана з продуктивністю алгоритму за допомогою функції кількості елементів даних. З іншого боку, у цій моделі час роботи алгоритму на множині з n елементів вважається найгіршим часом виконання для будь-якої можливої комбінації значень K та w. Першим алгоритмом такого типу був алгоритм сортування [en] Фредмана та Уіларда, який сортує за час O(n log n / log log n); це поліпшення алгоритму сортування порівнянням для будь-якого вибору K та w. Альтернативна версія їх алгоритму, що містить використання випадкових чисел та операцій цілочисельного поділу, покращує це до O(n√log n).
З моменту їх роботи були розроблені ще кращі алгоритми. Наприклад, неодноразово застосовуючи методику зниження діапазону Кіркпатріка-Рейша, поки ключі не будуть достатньо малими, щоб застосувати упакований алгоритм сортування Альберса-Хагерупа, можна сортувати за час O(n log log n); однак, частина цього алгоритму, що відповідає за зменшення діапазону, вимагає або великого обсягу пам'яті (пропорційно до √K), або рандомізації у вигляді хеш-таблиць.
Han та Thorup, (2002) показали, як сортувати за рандомізований час O(n√log log n). Їхня техніка передбачає використання ідей, пов'язаних з сортуванням сигнатурами, для розбиття даних на множину малих підсписків, розмір яких досить невеликий, щоб сортування сигнатурами могло ефективно сортувати кожен з них. Також можна використовувати подібні ідеї для сортування цілих чисел детерміновано за час O(n log log n) та у лінійному просторі. Використовуючи лише прості арифметичні операції (без множення або пошуку в таблиці) можна сортувати за рандомізований очікуваний час O(n log log n) або детерміновано за час O(n (log log n)1 + ε) для будь-якої константи ε > 0.
Див. також
Примітки
- Han та Thorup, (2002).
- Fredman та Willard, (1993).
- The question of whether integer multiplication or table lookup operations should be permitted goes back to Fredman та Willard, (1993); see also Andersson, Miltersen та Thorup, (1999).
- Reif, (1985); comment in Cole та Vishkin, (1986); Hagerup, (1987); Bhatt та ін., (1991); Albers та Hagerup, (1997).
- Chowdhury, (2008).
- McIlroy, Bostic та McIlroy, (1993); Andersson та Nilsson, (1998).
- Rahman та Raman, (1998).
- Pedersen, (1999).
- DARPA HPCS Discrete Mathematics Benchmarks [ 10 березня 2016 у Wayback Machine.], Duncan A. Buell, University of South Carolina, retrieved 2011-04-20.
- Goodrich та Tamassia, (2002). Хоча Cormen та ін., (2001) також описує версію цього алгоритму сортування, але вона адаптована то вхідних даних, де ключі є дійсними числами з відомим розподіленням, на відміну від цілочисельного сортування
- Cormen та ін., (2001), 8.2 Counting Sort, pp. 168—169.
- Comrie, (1929–1930); Cormen та ін., (2001), 8.3 Radix Sort, pp. 170—173.
- Kirkpatrick та Reisch, (1984); Albers та Hagerup, (1997).
- Kirkpatrick та Reisch, (1984).
- Andersson та ін., (1998).
- Han, (2004).
- Thorup, (2002)
Посилання
- Первинні джерела
- Ajtai, M.; ; (1984), Hash functions for priority queues, , 63 (3): 217—225, doi:10.1016/S0019-9958(84)80015-7, MR 0837087.
- ; Hagerup, Torben (1997), Improved parallel integer sorting without concurrent writing, , 136 (1): 25—51, doi:10.1006/inco.1997.2632, MR 1457693.
- Andersson, Arne; Hagerup, Torben; Nilsson, Stefan; Raman, Rajeev (1998), Sorting in linear time?, , 57 (1): 74—93, doi:10.1006/jcss.1998.1580, MR 1649809.
- Andersson, Arne; Nilsson, Stefan (1998), Implementing radixsort, ACM Journal of Experimental Algorithmics, 3, doi:10.1145/297096.297136, MR 1717389.
- Andersson, Arne; Miltersen, Peter Bro; (1999), Fusion trees can be implemented with AC0 instructions only, , 215 (1-2): 337—344, doi:10.1016/S0304-3975(98)00172-8, MR 1678804.
- Bhatt, P. C. P.; Diks, K.; Hagerup, T.; Prasad, V. C.; Radzik, T.; Saxena, S. (1991), Improved deterministic parallel integer sorting, , 94 (1): 29—47, doi:10.1016/0890-5401(91)90031-V, MR 1123154.
- Cole, R.; (1986), Deterministic coin tossing with applications to optimal parallel list ranking, , 70 (1): 32—53, doi:10.1016/S0019-9958(86)80023-7.
- Comrie, L. J. (1929–1930), The Hollerith and Powers tabulating machines, Trans. Office Mach. Users’ Assoc., Ltd.: 25—37. Cited by Thorup, (2007) as an early source for .
- ; (1993), Surpassing the information-theoretic bound with fusion trees, , 47 (3): 424—436, doi:10.1016/0022-0000(93)90040-4, MR 1248864.
- ; (1994), Trans-dichotomous algorithms for minimum spanning trees and shortest paths, , 48 (3): 533—551, doi:10.1016/S0022-0000(05)80064-9, MR 1279413.
- Hagerup, Torben (1987), Towards optimal parallel bucket sorting, , 75 (1): 39—51, doi:10.1016/0890-5401(87)90062-9, MR 0910976.
- Han, Yijie (2004), Deterministic sorting in O(n log log n) time and linear space, Journal of Algorithms, 50 (1): 96—105, doi:10.1016/j.jalgor.2003.09.001, MR 2028585.
- Han, Yijie; (2002), Integer sorting in O(n√log log n) expected time and linear space, , IEEE Computer Society, с. 135—144, doi:10.1109/SFCS.2002.1181890.
- ; Reisch, Stefan (1984), Upper bounds for sorting integers on random access machines, , 28 (3): 263—276, doi:10.1016/0304-3975(83)90023-3, MR 0742289.
- McIlroy, Peter M.; Bostic, Keith; McIlroy, M. Douglas (1993), Engineering Radix Sort (PDF), Computing Systems, 6 (1): 5—27.
- Pedersen, Morten Nicolaj (1999), , Masters thesis, Department of Computer Science, University of Copenhagen, Denmark, архів оригіналу за 16 березня 2012, процитовано 26 лютого 2019.
- Rahman, Naila; Raman, Rajeev (1998), An experimental study of word-level parallelism in some sorting algorithms, (PDF), , с. 193—203, архів оригіналу (PDF) за 19 серпня 2019, процитовано 26 лютого 2019.
- (1985), An optimal parallel algorithm for integer sorting, , IEEE Computer Society, с. 496—504, doi:10.1109/SFCS.1985.9.
- (2002), Randomized sorting in O(n log log n) time and linear space using addition, shift, and bit-wise Boolean operations, Journal of Algorithms, 42 (2): 205—230, doi:10.1006/jagm.2002.1211, MR 1895974.
- (2003), On AC0 implementations of fusion trees and atomic heaps, Proceedings of the Fourteenth Annual ACM-SIAM Symposium on Discrete Algorithms (Baltimore, MD, 2003), New York: ACM, с. 699—707, MR 1974982.
- (2007), Equivalence between priority queues and sorting, , 54 (6): Art. 28, doi:10.1145/1314690.1314692, MR 2374029.
- (1983), Log-logarithmic worst-case range queries are possible in space Θ(N), , 17 (2): 81—84, doi:10.1016/0020-0190(83)90075-3, MR 0731126.
- Вторинні джерела
- Chowdhury, Rezaul A. (2008), , у Kao, Ming-Yang (ред.), Encyclopedia of Algorithms, Springer, с. 278—281, ISBN , архів оригіналу за 17 травня 2016, процитовано 26 лютого 2019.
- Т. Кормен; Ч. Лейзерсон; Р. Рівест; К. Стайн (2009) [1990]. Вступ до алгоритмів (вид. 3rd). MIT Press і McGraw-Hill. ISBN .
- ; (2002), 4.5 Bucket-Sort and Radix-Sort, Algorithm Design: Foundations, Analysis, and Internet Examples, John Wiley & Sons, с. 241—243.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cilochiselne sortuvannya v informatici ce algoritmichna zadacha sortuvannya naboru znachen za chislovimi klyuchami kozhen z yakih ye cilim chislom Algoritmi priznacheni dlya cilochiselnogo sortuvannya takozh mozhut chasto zastosovuvatisya do zadach sortuvannya v yakih klyuchi chisla z ruhomoyu komoyu racionalni chisla abo tekstovi ryadki V bagatoh vipadkah mozhlivist vikonannya cilochiselnoyi arifmetiki z klyuchami dozvolyaye cilochiselnim algoritmam sortuvannya vikonuvatis shvidshe nizh algoritmam sortuvannya porivnyannyami ale ce zalezhit vid togo yaki operaciyi dozvoleni v modeli obchislen i naskilki velikimi mozhut buti cili chisla Shiroko vikoristovuyutsya praktichni algoritmi cilochiselnogo sortuvannya taki yak sortuvannya Dirihle angl Pigeonhole sortuvannya pidrahunkom i sortuvannya za rozryadami Inshi algoritmi cilochiselnogo sortuvannya z menshimi ocinkami najgirshogo vipadku ne vvazhayutsya praktichnimi dlya komp yuternih arhitektur yaki mayut 64 j menshe bitiv na slovo Vidomo bagato takih algoritmiv shvidkodiya yakih zalezhit vid kombinaciyi kilkosti ob yektiv sho pidlyagayut sortuvannyu kilkosti bitiv na klyuch i kilkosti bitiv na slovo u komp yuteri yakij vikonuye algoritm sortuvannya Zagalni mirkuvannyaModeli obchislen Ocinki chasu dlya algoritmiv cilochiselnogo sortuvannya zazvichaj zalezhat vid troh parametriv chislo n kilkist znachen sho pidlyagayut sortuvannyu velichina K najbilshij mozhlivij klyuch dlya sortuvannya ta chislo w kilkist bitiv yaki mozhut buti predstavleni v odnomu mashinnomu slovi komp yutera na yakomu povinen vikonuvatisya algoritm Yak pravilo peredbachayetsya sho w log2 max n K tobto mashinni slova dostatno veliki shob predstavlyati indeks u poslidovnosti vhidnih danih a takozh dosit veliki shob predstavlyati yedinij klyuch Algoritmi cilochiselnogo sortuvannya zazvichaj rozrobleni dlya roboti c modelyami obchislen v en angl Pointer machine abo v mashini z dovilnim dostupom Osnovna vidminnist mizh cimi dvoma modelyami polyagaye v tomu yak pam yat mozhe buti adresovana Mashina dovilnogo dostupu dozvolyaye bud yake znachennya yake zberigayetsya v registri vikoristovuvati yak adresu operacij zchituvannya ta zapisu pam yati z odinichnoyu vartistyu operaciyi Ce dozvolyaye shvidko realizovuvati pevni skladni operaciyi nad danimi za dopomogoyu poshuku v tablici Z inshogo boku v modeli mashini vkazivnika operaciyi zchituvannya i zapisu vikoristovuyut adresi sho zberigayutsya v vkazivnikah i ne dozvolyayetsya vikonuvati arifmetichni operaciyi nad cimi vkazivnikami V oboh modelyah mozhna dodavati znachennya danih vikonuvati pobitovi bulevi operaciyi i dvijkovi operaciyi zsuvu nad nimi za odinicyu chasu na operaciyu Prote rizni algoritmi cilochiselnogo sortuvannya roblyat rizni pripushennya shodo togo chi maye cilochiselne mnozhennya yak operaciya odinichnu vartist Takozh rozglyadayutsya inshi bilsh specializovani modeli obchislen taki yak paralelna mashina z dovilnim dostupom Andersson Milterse ta Thorup 1999 pokazali sho v deyakih vipadkah mnozhennya abo poshuk v tablicyah yaki neobhidni dlya deyakih algoritmiv cilochiselnogo sortuvannya mozhut buti zamineni specialnimi operaciyami yaki legshe realizuyutsya v aparatnih zasobah ale zazvichaj ne dostupni na komp yuterah zagalnogo priznachennya Thorup 2003 pokrashiv ce pokazavshi yak zaminiti ci specialni operaciyi na instrukciyi z manipulyuvannya en yaki vzhe dostupni na procesorah Pentium Sortuvannya v porivnyanni z cilochiselnoyu chergoyu z prioritetom Cherga z prioritetami angl priority queue ce struktura danih dlya zberezhennya kolekciyi elementiv z chislovimi prioritetami sho maye operaciyi poshuku ta vidalennya elementa z minimalnim znachennyam prioritetu Chergi z prioritetom zasnovani na porivnyannyah taki yak binarna kupa potrebuyut logarifmichnogo chasu na onovlennya ale taki strukturi yak derevo van Emde Boasa abo en angl bucket queue mozhut buti shvidshimi dlya vhidnih danih u yakih prioritetami ye mali cili chisla Ci strukturi danih mozhut buti vikoristani v algoritmi sortuvannya viborom yakij sortuye nabir elementiv shlyahom bagatorazovogo poshuku i vidalennya najmenshogo elementa z kolekciyi ta povernennyam elementiv v poryadku v yakomu voni buli znajdeni Cherga z prioritetami mozhe vikoristovuvatisya v comu algoritmi dlya zberezhennya kolekciyi elementiv i chas dlya cogo algoritmu dlya kolekciyi z n elementiv mozhe buti obmezhenim chasom dlya inicializaciyi chergi prioritetu a potim vikonuvannyam n operacij poshuku i vidalennya Napriklad vikoristannya binarnoyi kupi yak chergi prioritetu u sortuvanni viborom prizvodit do algoritmu piramidalnogo sortuvannya algoritmu na osnovi porivnyan yakij zajmaye chas O n log n Zamist cogo yaksho vikoristovuvati en v sortuvanni viborom ce prizvodit do formi sortuvannya Dirihle a vikoristannya dereva van Emde Boasa abo inshih cilochiselnih cherg z prioritetami prizvodit do inshih algoritmiv shvidkogo sortuvannya Zamist vikoristannya cilochiselnoyi chergi z prioritetami v algoritmi sortuvannya mozhna vikoristovuvati algoritmi cilochiselnogo sortuvannya yak pidprogrami v strukturi danih cilochiselnoyi chergi z prioritetami Thorup 2007 vikoristovuvav cyu ideyu shob pokazati sho yaksho mozhlivo vikonati cilochiselne sortuvannya za chas T n na klyuch todi odnakove obmezhennya chasu zastosovuyetsya do chasu na operaciyu vstavki abo vidalennya v strukturi danih chergi z prioritetami Skorochennya Torupa angl Thorup s ye skladnim i peredbachaye nayavnist abo shvidkih operacij mnozhennya abo poshuku v tablici ale vin takozh nadaye alternativnu chergu z prioritetami yaka vikoristovuye tilki operaciyi dodavannya ta bulevi operaciyi z chasom T n T log n T log log n za operaciyu maksimalne mnozhennya chasu na povtornij logarifm Vikoristovnist Klasichni algoritmi cilochiselnogo sortuvannya taki yak sortuvannya Dirihle angl Pigeonhole sortuvannya pidrahunkom i sortuvannya za rozryadami shiroko vikoristovuyutsya ta ye dosit praktichnimi Bilshist podalshih doslidzhen algoritmiv cilochiselnogo sortuvannya menshe zoseredzhuvalasya na praktichnosti ta bilshe na teoretichnih vdoskonalennyah v en i algoritmi sho vihodyat z cogo napryamku doslidzhennya ne vvazhayutsya praktichnimi dlya suchasnih 64 bitovih arhitektur komp yuteriv hocha eksperimenti pokazali sho deyaki z cih metodiv mozhut buti polipshennyam u sortuvanni za rozryadami dlya danih z 128 abo bilshe bitami na klyuch Krim togo dlya velikih naboriv danih vikoristannya modelej z majzhe dovilnim en dlya bagatoh algoritmiv cilochiselnogo sortuvannya mozhe zavaditi yih porivnyannyu zi shozhimi algoritmami sortuvannya yaki buli rozrobleni z oriyentaciyeyu na vikoristannya iyerarhiyi pam yati Cilochiselne sortuvannya ye odnim z shesti testiv produktivnosti diskretnoyi matematiki agentstva peredovih oboronnih doslidnickih proektiv DARPA angl Defense Advanced Research Projects Agency dlya en ta odnim z odinadcyati testiv produktivnosti u komplekti testiv NAS Parallel Benchmarks Praktichni algoritmiSortuvannya Dirihle abo sortuvannya pidrahunkom mozhut sortuvati n elementiv danih sho mayut klyuchi v diapazoni vid 0 do K 1 za chas O n K U sortuvanni Dirihle chasto nazivayut sortuvannyam komirkami vkazivniki na elementi danih rozpodileni po tablici komirok sho predstavleni yak tipi danih taki yak zv yazani spiski vikoristovuyuchi klyuchi yak indeksi v tablici Dali vsi elementi ob yednuyutsya razom shob sformuvati vihidnij spisok Sortuvannya pidrahunkami vikoristovuye tablicyu lichilnikiv zamist tablici komirok shob viznachiti kilkist elementiv z kozhnim klyuchem Dali vikoristovuyetsya obchislennya en dlya viznachennya diapazonu pozicij u vidsortovanih vihidnih danih na yakomu povinni buti rozmisheni znachennya z kozhnim klyuchem Nareshti u drugomu prohodi nad vhidnimi danimi kozhen element peremishuyetsya do poziciyi klyucha u vihidnomu masivi Obidva algoritmi vklyuchayut tilki prosti cikli nad vhidnimi danimi za chas O n ta nad mnozhinoyu mozhlivih klyuchiv za chas O K dayuchi zagalnij chas O n K Sortuvannya za rozryadami ce algoritm sortuvannya yakij pracyuye dlya bilshih klyuchiv nizh sortuvannya Dirihle abo sortuvannya pidrahunkami shlyahom vikonannya dekilkoh prohodiv nad danimi Pri kozhnomu prohodi vhidni dani sortuyutsya vikoristovuyuchi lishe chastinu klyuchiv vikoristovuyuchi inshij algoritm sortuvannya takij yak sortuvannya Dirihle abo sortuvannya pidrahunkami yaki pidhodyat lishe dlya malih klyuchiv Shob rozbiti klyuchi na chastini algoritm sortuvannya za rozryadami obchislyuye pozicijnu sistemu dlya kozhnogo klyucha vidpovidno do deyakogo obranogo rozryadu dali chastina klyucha sho vikoristovuyetsya dlya i go prohodzhennya algoritmu e i yu cifroyu u pozicijnij sistemi dlya povnogo klyucha pochinayuchi z najmensh znachushoyi ta perehodyachi na najbilsh znachushoyi cifri Dlya togo shob cej algoritm pracyuvav korektno algoritm sortuvannya sho vikoristovuyetsya pri kozhnomu prohodi nad danimi povinen buti stabilnim elementi z odnakovimi ciframi ne povinni zminyuvati poziciyi odin z odnim Dlya najbilshoyi efektivnosti rozryad povinen buti vibranij blizko do kilkosti elementiv danih n Krim togo vikoristannya stupeniv dvijki blizkih do n yak rozryadu dozvolyaye klyucham dlya kozhnogo prohodu buti shvidko obchislenimi vikoristovuyuchi tilki shvidki binarni operaciyi zsuvu i maski Za dopomogoyu cih variantiv a takozh za dopomogoyu sortuvannya Dirihle abo sortuvannya pidrahunkami yak bazovogo algoritmu sortuvannya za rozryadami mozhe vidsortuvati n elementiv danih yaki mayut klyuchi v diapazoni vid 0 do K 1 za chas O n logn K Teoretichni algoritmiBulo rozrobleno bagato cilochiselnih algoritmiv sortuvannya teoretichnij analiz yakih pokazuye sho voni vedut sebe krashe nizh sortuvannya porivnyannyami sortuvannya Dirihlye abo sortuvannya za rozryadami dlya velikih kombinacij parametriv sho viznachayut kilkist elementiv sho pidlyagayut sortuvannyu diapazon klyuchiv i rozmir mashinnogo slova Yakij algoritm maye krashu produktivnist zalezhit vid znachen cih parametriv Odnak vsuperech yihnim teoretichnim perevagam ci algoritmi ne ye polipshennyam dlya tipovih diapazoniv cih parametriv yaki vinikayut u praktichnih zadachah sortuvannya Algoritmi dlya malenkih klyuchiv Derevo van Emde Boasa mozhe vikoristovuvatisya yak cherga z prioritetom dlya sortuvannya naboru z n klyuchiv kozhen v diapazoni vid 0 do K 1 za chas O n log log K Ce ye teoretichnim polipshennyam porivnyano z sortuvannyam za rozryadami koli K ye dostatno velikim Odnak dlya togo shob vikoristovuvati derevo van Emde Boasa potribno abo bezposeredno adresovanu pam yat z K sliv abo zmodelyuvati jogo za dopomogoyu gesh tablici zmenshuyuchi prostir do linijnogo ale algoritm staye vipadkovim She odniyeyu chergoyu z prioritetom z podibnoyu produktivnistyu vklyuchayuchi neobhidnist vipadkovosti u viglyadi gesh tablic ye en Willard 1983 Bilsh skladnij metod z podibnoyu osoblivistyu i z krashimi teoretichnimi harakteristikami rozrobili Kirkpatrick ta Reisch 1984 Voni zauvazhili sho kozhen prohid sortuvannya za rozryadami mozhe buti interpretovanij yak metod skorochennya diapazonu yakij za linijnij chas zmenshuye maksimalnij rozmir klyucha na koeficiyent n zamist cogo yih metod zmenshuye rozmir klyucha do kvadratnogo korenya z poperednogo znachennya zmenshivshi udvichi kilkist bitiv neobhidnih dlya predstavlennya klyucha znovu za linijnij chas Yak i v sortuvanni za rozryadami voni interpretuyut klyuchi yak dvoznachni chisla za en b sho stanovit priblizno K Potim voni grupuyut elementi yaki neobhidno vidsortuvati u komirki angl buckets vidpovidno do yih starshih cifr u linijnij chas vikoristovuyuchi abo veliku ale neinicializovanu pam yat z pryamim dostupom abo gesh tablicyu U kozhnoyi komirki ye predstavnik element v komirci z najbilshim klyuchem potim voni sortuyut spisok elementiv vikoristovuyuchi starshi cifri dlya predstavnikiv i molodshi cifri dlya ne predstavnikiv yak klyuchi Grupuyuchi elementi z cogo spisku znovu v komirki kozhna komirka mozhe buti roztashovana u vidsortovanomu poryadku i vityagayuchi predstavnikiv z vidsortovanogo spisku komirki mozhut buti ob yednani u vidsortovanomu poryadku Takim chinom za linijnij chas problema sortuvannya zvoditsya do inshoyi rekursivnoyi zadachi sortuvannya v yakij klyuchi znachno menshi nizh kvadratnij korin z yihnoyi poperednoyi velichini Povtorennya cogo zmenshennya diapazonu poki klyuchi dostatno mali shob sortuvati komirkami prizvodit do algoritmu z chasom roboti O n log logn K Skladnij vipadkovij algoritm Han ta Thorup 2002 v modeli obchislennya en dozvolyaye ci chasovi mezhi skorochuvati she dali do O n log log K Algoritmi dlya velikih sliv Algoritm cilochiselnogo sortuvannya vvazhayetsya nekonservativnim yaksho vin vimagaye rozmir slova w sho znachno perevishuye log max n K Yak ekstremalnij ekzemplyar yaksho w K i vsi klyuchi rizni to nabir klyuchiv mozhe buti vidsortovanij za linijnij chas predstavlenij yak bitova mapa z bitom 1 u polozhenni i koli i ye odnim z otrimanih klyuchiv a potim povtorno vidalyayetsya najmensh vazhlivij bit Nekonservativnij algoritm sortuvannya Albers ta Hagerup 1997 vikoristovuye pidprogramu zasnovanu na en en dlya ob yednannya dvoh sortovanih poslidovnostej klyuchiv kozhna z yakih dosit korotka shob buti upakovanimi v odne mashinne slovo Vhidni dani do zapakovanogo algoritmu sortuvannya poslidovnist elementiv sho zberigayutsya po odnomu slovu peretvoryuyetsya v upakovanu formu poslidovnist sliv kozhna z yakih mistit kilka elementiv u vidsortovanomu poryadku vikoristovuyuchi cyu pidprogramu povtorno shob podvoyiti kilkist elementiv upakovanih u kozhne slovo Pislya togo yak poslidovnist nabula upakovanu formu Albers and Hagerup vikoristovuyut formu sortuvannya zlittyam shob vidsortuvati yiyi koli dvi poslidovnosti ob yednuyutsya u dovshu poslidovnist take zh same bitonichne sortuvannya mozhe buti vikoristano dlya povtornogo viluchennya zapakovanih sliv sho skladayutsya z najmenshih zalishivshihsya elementiv dvoh poslidovnostej Cej algoritm otrimuye dostatno priskorennya zi svogo upakovanogo podannya shob vidsortuvati svoyi vhidni dani za linijnij chas koli ce mozhlivo dlya odnogo slova sho mistit W log n log log n klyuchiv tobto koli log K log n log log n cw dlya deyakoyi konstanti c gt 0 Algoritmi dlya dekilkoh elementiv Sortuvannya Dirihle sortuvannya pidrahunkom ta derevo van Emde Boasa pracyuyut garno koli rozmir klyuchiv nevelikij dlya dosit velikih klyuchiv voni stayut povilnishimi nizh algoritmi sortuvannya porivnyannyami Odnak yaksho rozmir klyucha abo rozmir slova duzhe veliki shodo kilkosti elementiv abo ekvivalentni koli kilkist elementiv nevelika mozhe znovu stati mozhlivim sortuvati shvidko vikoristovuyuchi rizni algoritmi yaki vikoristovuyut perevagi paralelizmu zdatnogo vikonuvati arifmetichni operaciyi nad velikimi slovami Odin iz pershih rezultativ u comu napryamku otrimali Ajtai Fredman ta Komlos 1984 za dopomogoyu modeli obchislen en shtuchna model v yakij skladnist algoritmu vimiryuyetsya tilki rozmirom dostupnoyi pam yati yaku vin vikoristovuye Spirayuchis na svoyu robotu Fredman ta Willard 1994 opisali dvi strukturi danih Q kupu ta atomnu kupu yaki realizuyutsya na mashini dovilnogo dostupu Q kupa ye bito paralelnoyu versiyeyu dvijkovogo prefiksnogo dereva i dozvolyaye yak operaciyam prioritetnih cherg tak i nastupnim ta poperednim zapitam vikonuvatisya za postijnij chas dlya naboriv z O log N 1 4 elementiv de N 2w ce rozmir poperedno obchislenih tablic neobhidnih dlya realizaciyi strukturi danih Atomna kupa ce B derevo u yakomu kozhen vuzol dereva predstavleno u viglyadi Q kupi ce dozvolyaye vikonuvati operaciyi cherg z prioritetami i otzhe sortuvannya za postijnij chas dlya naboriv z log N O 1 elementiv Andersson ta in 1998 pokazali randomizovanij algoritm yakij nazivayetsya sortuvannyam signaturami sho dozvolyaye sortuvati za linijnij chas nabori elementiv kilkistyu do 2O log w 1 2 e elementiv pri umovi bud yakoyi konstanti e gt 0 Yak i v algoritmi Kirkpatrika ta Rejsha voni vikonuyut zmenshennya diapazonu vikoristovuyuchi predstavlennya klyuchiv yak chisla z osnovoyu b dlya retelnogo viboru b Yih algoritm zmenshennya diapazonu zaminyuye kozhnu cifru signaturoyu yaka ye heshovanim znachennyam z O log n bitami tak sho rizni znachennya cifr mayut rizni pidpisi Yaksho n ye dostatno malim chisla utvoreni cim procesom zamini budut znachno menshimi nizh vihidni klyuchi dozvolyayuchi nekonservativnomu upakovanomu algoritmu sortuvannya Albers ta Hagerup 1997 sortuvati zamineni chisla za linijnij chas Z vidsortovanogo spisku zaminenih chisel mozhna sformuvati prefiksne derevo klyuchiv u linijnij chas ta diti kozhnogo vuzla u comu derevi mozhut buti rekursivno vidsortovani vikoristovuyuchi tilki klyuchi rozmiru b pislya chogo obhid dereva daye vidsortovanij poryadok elementiv Trans dihotomichni algoritmi Fredman ta Willard 1993 predstavili en analizu dlya algoritmiv sortuvannya cilih chisel u yakij nichogo ne peredbachayetsya pro diapazon cilochiselnih klyuchiv ta maye buti pov yazana z produktivnistyu algoritmu za dopomogoyu funkciyi kilkosti elementiv danih Z inshogo boku u cij modeli chas roboti algoritmu na mnozhini z n elementiv vvazhayetsya najgirshim chasom vikonannya dlya bud yakoyi mozhlivoyi kombinaciyi znachen K ta w Pershim algoritmom takogo tipu buv algoritm sortuvannya en Fredmana ta Uilarda yakij sortuye za chas O n log n log log n ce polipshennya algoritmu sortuvannya porivnyannyam dlya bud yakogo viboru K ta w Alternativna versiya yih algoritmu sho mistit vikoristannya vipadkovih chisel ta operacij cilochiselnogo podilu pokrashuye ce do O n log n Z momentu yih roboti buli rozrobleni she krashi algoritmi Napriklad neodnorazovo zastosovuyuchi metodiku znizhennya diapazonu Kirkpatrika Rejsha poki klyuchi ne budut dostatno malimi shob zastosuvati upakovanij algoritm sortuvannya Albersa Hagerupa mozhna sortuvati za chas O n log log n odnak chastina cogo algoritmu sho vidpovidaye za zmenshennya diapazonu vimagaye abo velikogo obsyagu pam yati proporcijno do K abo randomizaciyi u viglyadi hesh tablic Han ta Thorup 2002 pokazali yak sortuvati za randomizovanij chas O n log log n Yihnya tehnika peredbachaye vikoristannya idej pov yazanih z sortuvannyam signaturami dlya rozbittya danih na mnozhinu malih pidspiskiv rozmir yakih dosit nevelikij shob sortuvannya signaturami moglo efektivno sortuvati kozhen z nih Takozh mozhna vikoristovuvati podibni ideyi dlya sortuvannya cilih chisel determinovano za chas O n log log n ta u linijnomu prostori Vikoristovuyuchi lishe prosti arifmetichni operaciyi bez mnozhennya abo poshuku v tablici mozhna sortuvati za randomizovanij ochikuvanij chas O n log log n abo determinovano za chas O n log log n 1 e dlya bud yakoyi konstanti e gt 0 Div takozhPrincip DirihlePrimitkiHan ta Thorup 2002 Fredman ta Willard 1993 The question of whether integer multiplication or table lookup operations should be permitted goes back to Fredman ta Willard 1993 see also Andersson Miltersen ta Thorup 1999 Reif 1985 comment in Cole ta Vishkin 1986 Hagerup 1987 Bhatt ta in 1991 Albers ta Hagerup 1997 Chowdhury 2008 McIlroy Bostic ta McIlroy 1993 Andersson ta Nilsson 1998 Rahman ta Raman 1998 Pedersen 1999 DARPA HPCS Discrete Mathematics Benchmarks 10 bereznya 2016 u Wayback Machine Duncan A Buell University of South Carolina retrieved 2011 04 20 Goodrich ta Tamassia 2002 Hocha Cormen ta in 2001 takozh opisuye versiyu cogo algoritmu sortuvannya ale vona adaptovana to vhidnih danih de klyuchi ye dijsnimi chislami z vidomim rozpodilennyam na vidminu vid cilochiselnogo sortuvannya Cormen ta in 2001 8 2 Counting Sort pp 168 169 Comrie 1929 1930 Cormen ta in 2001 8 3 Radix Sort pp 170 173 Kirkpatrick ta Reisch 1984 Albers ta Hagerup 1997 Kirkpatrick ta Reisch 1984 Andersson ta in 1998 Han 2004 Thorup 2002 PosilannyaPervinni dzherela Ajtai M 1984 Hash functions for priority queues 63 3 217 225 doi 10 1016 S0019 9958 84 80015 7 MR 0837087 Hagerup Torben 1997 Improved parallel integer sorting without concurrent writing 136 1 25 51 doi 10 1006 inco 1997 2632 MR 1457693 Andersson Arne Hagerup Torben Nilsson Stefan Raman Rajeev 1998 Sorting in linear time 57 1 74 93 doi 10 1006 jcss 1998 1580 MR 1649809 Andersson Arne Nilsson Stefan 1998 Implementing radixsort ACM Journal of Experimental Algorithmics 3 doi 10 1145 297096 297136 MR 1717389 Andersson Arne Miltersen Peter Bro 1999 Fusion trees can be implemented with AC0 instructions only 215 1 2 337 344 doi 10 1016 S0304 3975 98 00172 8 MR 1678804 Bhatt P C P Diks K Hagerup T Prasad V C Radzik T Saxena S 1991 Improved deterministic parallel integer sorting 94 1 29 47 doi 10 1016 0890 5401 91 90031 V MR 1123154 Cole R 1986 Deterministic coin tossing with applications to optimal parallel list ranking 70 1 32 53 doi 10 1016 S0019 9958 86 80023 7 Comrie L J 1929 1930 The Hollerith and Powers tabulating machines Trans Office Mach Users Assoc Ltd 25 37 Cited by Thorup 2007 as an early source for 1993 Surpassing the information theoretic bound with fusion trees 47 3 424 436 doi 10 1016 0022 0000 93 90040 4 MR 1248864 1994 Trans dichotomous algorithms for minimum spanning trees and shortest paths 48 3 533 551 doi 10 1016 S0022 0000 05 80064 9 MR 1279413 Hagerup Torben 1987 Towards optimal parallel bucket sorting 75 1 39 51 doi 10 1016 0890 5401 87 90062 9 MR 0910976 Han Yijie 2004 Deterministic sorting in O n log log n time and linear space Journal of Algorithms 50 1 96 105 doi 10 1016 j jalgor 2003 09 001 MR 2028585 Han Yijie 2002 Integer sorting in O n log log n expected time and linear space IEEE Computer Society s 135 144 doi 10 1109 SFCS 2002 1181890 Reisch Stefan 1984 Upper bounds for sorting integers on random access machines 28 3 263 276 doi 10 1016 0304 3975 83 90023 3 MR 0742289 McIlroy Peter M Bostic Keith McIlroy M Douglas 1993 Engineering Radix Sort PDF Computing Systems 6 1 5 27 Pedersen Morten Nicolaj 1999 Masters thesis Department of Computer Science University of Copenhagen Denmark arhiv originalu za 16 bereznya 2012 procitovano 26 lyutogo 2019 Rahman Naila Raman Rajeev 1998 An experimental study of word level parallelism in some sorting algorithms PDF s 193 203 arhiv originalu PDF za 19 serpnya 2019 procitovano 26 lyutogo 2019 1985 An optimal parallel algorithm for integer sorting IEEE Computer Society s 496 504 doi 10 1109 SFCS 1985 9 2002 Randomized sorting in O n log log n time and linear space using addition shift and bit wise Boolean operations Journal of Algorithms 42 2 205 230 doi 10 1006 jagm 2002 1211 MR 1895974 2003 On AC0 implementations of fusion trees and atomic heaps Proceedings of the Fourteenth Annual ACM SIAM Symposium on Discrete Algorithms Baltimore MD 2003 New York ACM s 699 707 MR 1974982 2007 Equivalence between priority queues and sorting 54 6 Art 28 doi 10 1145 1314690 1314692 MR 2374029 1983 Log logarithmic worst case range queries are possible in space 8 N 17 2 81 84 doi 10 1016 0020 0190 83 90075 3 MR 0731126 Vtorinni dzherela Chowdhury Rezaul A 2008 u Kao Ming Yang red Encyclopedia of Algorithms Springer s 278 281 ISBN 9780387307701 arhiv originalu za 17 travnya 2016 procitovano 26 lyutogo 2019 T Kormen Ch Lejzerson R Rivest K Stajn 2009 1990 Vstup do algoritmiv vid 3rd MIT Press i McGraw Hill ISBN 0 262 03384 4 2002 4 5 Bucket Sort and Radix Sort Algorithm Design Foundations Analysis and Internet Examples John Wiley amp Sons s 241 243