Я недавно узнал о сортировке Radix, и одним из источников, которые я использовал, является страница Википедии. На данный момент там есть параграф об эффективности алгоритма:
Тема эффективности поразрядной сортировки по сравнению с другими алгоритмами сортировки несколько сложна и вызывает множество недоразумений. Будет ли поразрядная сортировка столь же эффективной, менее или более эффективной, чем у лучших алгоритмов, основанных на сравнении, зависит от деталей сделанных предположений. Сложность сортировки по основанию равна O (wn) для n ключей, которые являются целыми числами размером w. Иногда w представляется как константа, что сделало бы сортировку по основанию лучше (для достаточно больших n), чем лучшие алгоритмы сортировки на основе сравнения, которые все выполняют O (n log n) сравнений для сортировки n ключей. Однако в целом w нельзя считать константой: если все n ключей различны, тогда w должно быть не меньше log n, чтобы машина с произвольным доступом могла хранить их в памяти, что дает в лучшем случае временная сложность O (n log n). Это, казалось бы, делает сортировку radix не менее эффективной, чем лучшие сортировки на основе сравнения (и хуже, если ключи намного длиннее, чем log n) .
К сожалению, выделенная жирным шрифтом часть стала своего рода препятствием, которое я не могу преодолеть. Я понимаю, что в целом сортировка Radix - это O (wn), и из других источников я видел, как можно достичь O (n), но не могу понять, почему n различных ключей требует времени O (n log n) для хранения в случайном порядке. доступ к машине. Я почти уверен, что все сводится к простой математике, но, к сожалению, твердое понимание остается вне моей досягаемости.
Моя ближайшая попытка такова:
Учитывая основание «B» и число в этой базе «N», максимальное количество цифр, которое может иметь «N», составляет:
(logB из N) + 1.
Если каждое число в данном списке L уникально, то у нас есть до:
L * ((logB of N) + 1) возможностей
В этот момент я не уверен, как развиваться.
Может ли кто-нибудь развернуть приведенный выше раздел жирным шрифтом и пояснить, почему для n различных ключей требуется минимум log n для хранилища с произвольным доступом?