если у нас есть список из чисел, нам нужно записать n битnlogn
Нет: если у нас есть список чисел от до 2 k - 1 , нам нужно k бит. Между k и log n вообще нет никакой связи .02k−1kklogn
Если все числа различны, то , и радикальная сортировка по разным числам, следовательно, имеет временную сложность Ω ( n log n ) . В общем, сложность радикальной сортировки равна Θ ( nlogn≥kΩ(nlogn) где n - количество элементов для сортировки, а k - количество битов в каждом элементе.Θ(nk)nk
Сказать, что сложность радикальной сортировки равна означает брать фиксированный размер битов для чисел. Это подразумевает, что для достаточно большого n будет много повторяющихся значений.O(n)n
Существует общая теорема о том, что метод сортировки массива или списка, который работает путем сравнения двух элементов за один раз, не может работать быстрее, чем в худшем случае. Radix sort не работает при сравнении элементов, но работает тот же метод доказательства. Radix sort - это процесс принятия решения, чтобы определить, какую перестановку применить к массиву; есть n ! перестановки массива и радикальная сортировка принимает двоичные решения, т. е. решает, нужно ли поменять местами два элемента или нет на каждом этапе. После m двоичных решений радикальная сортировка может выбирать между 2 m перестановками. Чтобы достичь п ! возможные перестановки, необходимо, чтобыΘ ( п журналн )н !м2мн ! .m ≥ log(n!)=Θ(nlogn)
В доказательстве, которое я не выписал выше, предполагается, что алгоритм должен работать в случае, когда элементы различны. Если априори известно, что элементы не все различны, то число потенциальных перестановок меньше полного , При сортировке k- битных чисел возможно иметь n различных элементов только при n ≤ 2 k ; в этом случае сложность радикальной сортировки действительно равна Ω ( n log n ) . Для больших значений n должны быть коллизии, что объясняет, как радикальная сортировка может иметь сложность, меньшую чем Θ (n!knn≤2kΩ(nlogn)n когда n > 2 k .Θ(nlogn)n>2k