Алгоритм сортування, такий, що кожен елемент порівнює


39

Чи існують відомі алгоритми сортування порівняння, які не зводяться до сортування мереж, таким чином, щоб кожен елемент порівнювався разів?О(журналн)

Наскільки мені відомо, єдиний спосіб порівняння за допомогою порівняння на кожному елементі - це побудувати мережу сортування AKS для n входів та запустити вхід у сортувальній мережі.О(журналн)н

AKS непростий у здійсненні і має непрактичний постійний фактор, тому існують мотивації до пошуку інших алгоритмів.

Алгоритм з порівнянь за одиницю , яка , здається, не означає , сортувальну мережа представлена тут . (iirc, це вперше було представлено Роб Джонсоном на семінарі з алгоритму Стоні Брука).О(журнал2н)


2
Я не розумію питання: багато послідовних алгоритмів, здається, відповідають вашому запиту. наприклад Сортування об'єднань є класичним алгоритмом сортування, і він не робить більше, ніж порівняння на елемент. Можливо, ви запитуєте про алгоритми паралельного сортування? журналн
Джеремі

4
@Jeremy: Якщо об'єднати два списки, і ( б 1 , . . . , Б п ) , ви можете в кінцевому підсумку по порівнянні з 1 проти кожного з Ь 1 , . . . , b n , тобто порівняння Ω ( n ) на один елемент. І це був лише один крок "злиття". Звичайно середнє(а1,...,ан)(б1,...,бн)а1б1,...,бнΩ(н)кількість порівнянь обов'язково невелика, але питання полягає в найгіршому випадку складності.
Jukka Suomela

6
Я вважаю, що це можливо. Мережі сортування не мають даних про дані та мають заздалегідь визначений спосіб порівняння, але алгоритм сортування може обирати між різними наборами операцій залежно від даних. Можна змінити сортування злиття в алгоритм зі порівнянням для кожного елемента, і, схоже, не передбачає сортування мережі reddit.com/comments/9jqsi/…О(журнал2н)
Chao Xu

1
(а1,,ан)(б1,,бн)нlgн

2
Тепер виникає нове споріднене (але, сподіваюсь, набагато простіше) питання: cstheory.stackexchange.com/questions/8073/…
Jukka Suomela

Відповіді:


17

Обговорюючи це з Майклом Т. Гудричем, здається, що алгоритм паралельного сортування Коулом для EREW PRAM виконує цю роботу. Побачити

О(журналн)О(1)

Розширення цього алгоритму для паралельної машини покажчика наведено в


Ми хотіли б знати, хто ви! : D
Tayfun Pay

@someone - Серхіо Кабелло
хтось

О(журналн)О(журналн)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.