Seu arquetípico é um algoritmo de dividir e conquistar , que divide (e recombina) o trabalho em tempo linear e se repete sobre as peças. A classificação por mesclagem funciona dessa maneira: gaste tempo dividindo a entrada em duas partes aproximadamente iguais, classifique recursivamente cada peça e gaste tempo combinando as duas metades classificadas.O ( n ) Θ ( n )Θ ( n logn )O ( n )Θ ( n )
Intuitivamente, continuando a idéia de dividir e conquistar, cada estágio de divisão leva um tempo linear no total, porque o aumento no número de peças a serem divididas corresponde exatamente à diminuição no tamanho das peças, pois o tempo gasto pela divisão é linear. O tempo total de execução é o produto do custo total de um estágio de divisão multiplicado pelo número de estágios de divisão. Como o tamanho das peças é dividido pela metade a cada vez, existem estágios de divisão do , portanto o tempo total de execução é n ⋅ log ( n ) . (Até uma constante multiplicativa, a base do logaritmo é irrelevante.)registro2( N )n ⋅ log( N )
Colocando-o nas equações (), uma maneira de estimar o tempo de execução de um algoritmo é expressá-lo recursivamente: T ( n ) = 2 T ( n / 2 ) + Θ ( n ) . É claro que esse algoritmo leva mais que o tempo linear e podemos ver quanto mais dividindo por n :
T ( n )T( N )T( n ) = 2 T( n / 2 ) + Θ ( n )n
Quandondobra,T(n)/naumenta em uma quantidade constante:T(n)/naumenta logaritmicamente, ou seja,T(n)=Θ(nlogn).
T( N )n= T( n / 2 )n / 2+ Θ ( 1 )
nT( n ) / nT( n ) / nT( n ) = Θ ( n logn )
Este é um exemplo de um padrão mais geral: o teorema mestre . Para qualquer algoritmo recursivo que divide a sua entrada de tamanho em um pedaços de tamanho n / b e leva um tempo f ( n ) para realizar a divisão e recombinação, o satisfaz tempo de execução T ( n ) = um ⋅ T ( n / b ) + f ( n ) . Isto conduz a uma forma fechada que depende dos valores de um e b e a forma denuman / bf( N )T( n ) = a ⋅ T( n / b ) + f( N )umab . Se a = b e f ( n ) = Θ ( n ) , o teorema mestre declara que T ( n ) = Θ ( n log n ) .fa = bf( n ) = Θ ( n )T( n ) = Θ ( n logn )