Estoy parcialmente de acuerdo con @Armen, deberían ser comparables.
Pero: considere el caso cuando están divididos en el medio. Para fusionar dos listas de longitudes n
, necesitaríamos 2*n - 1
comparaciones (a veces menos, pero consideraremos que se corrigió por simplicidad), cada una de ellas produciendo el siguiente valor. Habría log2(n)
niveles de fusiones, que nos da aproximadamente n*log2(n)
comparaciones.
considerando ahora el caso al azar-split: El número máximo de comparations necesarios para fusionar una lista de longitud n1
con uno de longitud n2
será n1 + n2 - 1
. Sin embargo, el número promedio se acercará a él, porque incluso para la división más infeliz 1
y n-1
, necesitaremos un promedio de n/2
comparaciones. Entonces, podemos considerar que el costo de fusión por nivel será el mismo que en el caso par.
La diferencia es que, en casos aleatorios, el número de niveles será mayor, y podemos considerar que n
para el siguiente nivel sería max(n1, n2)
en lugar de n/2
. Este max(n1, n2)
tenderá a ser 3*n/4
, que nos da la fórmula aproximada
n*log43(n) // where log43 is log in base 4/3
que nos da
n * log2(n)/log2(4/3) ~= 2.4 * n * log2(n)
Este resultado es aún más grande que la correcta ya que ignora que la lista pequeño tendrá menos niveles, pero debe ser lo suficientemente cerca. Supongo que la respuesta correcta será el número de comparations en promedio se duplicará