se tivermos uma lista de números, precisamos bitsnlogn
Não: se tivermos uma lista de números entre e , precisaremos de bits. Não há relacionamento entre e em geral.2 k - 1 k k log n02k−1kklogn
Se os números forem todos distintos, então , e a classificação do radical em números distintos, portanto, possui uma complexidade de tempo de Ω ( n log n ) . Em geral, a complexidade da classificação do radical é Θ ( nlogn≥kΩ(nlogn) onde n é o número de elementos a serem classificados e k é o número de bits em cada elemento.Θ(nk)nk
Dizer que a complexidade da classificação de raiz é significa assumir um tamanho de bit fixo para os números. Isso implica que, para n grande o suficiente , haverá muitos valores duplicados.O(n)n
Existe um teorema geral de que um método de classificação de matriz ou lista que funciona comparando dois elementos por vez não pode ser executado mais rapidamente que na pior das hipóteses. A classificação Radix não funciona comparando elementos, mas o mesmo método de prova funciona. A classificação Radix é um processo de decisão para determinar qual permutação aplicar à matriz; existem n ! permutações da matriz e a classificação de radix toma decisões binárias, isto é, decide se deve trocar dois elementos ou não em cada estágio. Depois m decisões binárias, radix sort pode decidir entre 2 m permutações. Para alcançar o n ! possíveis permutações, é necessário queΘ(nlogn)n!m2mn! .m≥log(n!)=Θ(nlogn)
Uma suposição na prova de que não escrevi acima é que o algoritmo deve funcionar no caso em que os elementos são distintos. Se se sabe a priori que os elementos não são todos distintos, então o número de permutações potenciais é menor que o valor . Ao classificar números de bits de k , só é possível ter n elementos distintos quando n ≤ 2 k ; nesse caso, a complexidade da classificação do radical é de fato Ω ( n log n ) . Para valores maiores de n , deve haver colisões, o que explica como a classificação de raiz pode ter uma complexidade menor que Θ (n!knn≤2kΩ(nlogn)n quando n > 2 k .Θ(nlogn)n>2k