Предположим, что у вас есть волшебная структура данных, которая представляет собой линейную последовательность элементов, которая поддерживает поиск, вставку и удаление любого индекса в O (1) худшем случае.(Я почти уверен, что такая структура невозможна, учитывая модель памяти современных машин, но давайте просто предположим, что у нас есть такая для удовольствия).
Мой друг отметил, что если выЕсли у вас есть такая структура данных, то вы можете построить классный алгоритм сортировки целых чисел, который выполняется за ожидаемое время O (n lg lg n), следующим образом.Сначала создайте одну из волшебных структур данных, упомянутых выше.Затем для каждого элемента входного массива используйте интерполяционный поиск, чтобы найти в ожидаемое время O (lg lg n) индекс в том магическом массиве, к которому принадлежит элемент, а затем в O (1) время вставить элемент.Наконец, за O (n) время считайте отсортированную магическую структуру данных.Это делает n обращений к O (lg lg n) интерполяционному поиску, который будет выполняться за O (n lg lg n) раз.
Я понимаю, что вышеописанный подход не даст O в худшем случае (n lg lg n) время для сортировки, поскольку существуют патологически неверные входные массивы, которые, если их использовать при интерполяционном поиске, выродили бы поиск до времени O (n 2 ).Мой вопрос, учитывая эту волшебную структуру данных, Какой самый быстрый алгоритм целочисленной сортировки может быть построен , предполагая, что мы заботимся только о времени выполнения алгоритма в худшем случае?
(Этоможет лучше подходить к теории, но я подумал, что сначала спрошу здесь, так как в прошлом я получил ответы на некоторые великолепные алгоритмы.)