Я пытаюсь понять эту статью: Стабильное минимальное разбиение пространства в линейном времени.
Похоже, что критическая часть претензии заключается в том, что
Алгоритм B сортирует стабильно бит-массив размера n в O (nlog 2 n) время и постоянное дополнительное пространство, но делает только O (n).
Однако документ не описывает алгоритм, но только ссылается на другой документ, к которому у меня нет доступа. Я могу найти несколько способов сделать сортировку в пределах временных интервалов, но у меня возникли проблемы с поиском того, что гарантирует движение O (N), не требуя также больше, чем постоянное пространство.
Что это за алгоритм B? Другими словами, данный
boolean Predicate(Item* a); //returns result of testing *a for some condition
существует функция B(Item* a, size_t N);
, которая стабильно сортирует использование Predicate в качестве ключа сортировки с менее чем nlog 2 n вызовами Predicate и выполняет только O (N) запись в файл?