Припустимо, що ми хочемо сортувати список з n реальних чисел. Припустимо, що нам дають чорний ящик, який може сортувати √ миттєвих цифр миттєво. Скільки переваг ми можемо отримати, використовуючи цю чорну скриньку?
Наприклад, може ми сортуємо номери тільки з дзвінки в чорну скриньку? Найкращий алгоритм, який я знайшов, використовуєnдзвінків до чорного поля. Але я не зміг її покращити далі. Ось мій алгоритм, схожий на сортування злиття:
Перший розділ списку на √ спискиз1,˙s2,. . . ,s √ з приблизно√ розмір. Потімдопомогою √ дзвінків до чорного поля для сортування цих списків. Нарешті, об’єднайте відсортовані списки за допомогою чорного поля таким чином:
Помістіть найменші елементи списків у новий список , а потім зателефонуйте у чорну скриньку для сортування. Число в L [ 1 ] (перший і найменший елемент L ) буде найменшим номером в S . Ми можемо поставити його на перше місце у списку вихідних даних.
Якщо припустити , що елемент був обраний з х J , ми замінимо L [ 1 ] з другим найменшим елементом списку критеріїв сортування сек J , і знову запустити чорний ящик на ньому , щоб обчислити другий найменший елемент з S .
Ми продовжуємо, поки всі елементи не будуть відсортовані. Загальна кількість дзвінків з чорної скриньки для цієї частини буде . Тому загальна кількість викликів становитимеn.
З іншого боку, схоже, що ми повинні мати можливість отримати нижню межу, використовуючи нижню межу порівняння чисел, необхідних для сортування, таким чином: Ми можемо реалізувати чорну скриньку за допомогою порівнянь. Якщо ми можемо вирішити задачу за допомогоюo( √виклики до чорного поля та злиття у лінійному часі, ми можемо сортуватиnдійсних чисел із порівняннямo(nlgn),що неможливо.
Я думаю, ми могли б довести, що є нижньою межею для кількості викликів до чорного поля, оскільки багато порівнянь, які використовують у чорному полі, поділяться спільно, і тому вони перераховуються в нашому аргументі.
ОНОВЛЕННЯ: Як підказують інші публікації, також досяжно.