je tente de trouver la complexité de cet algorithme:aide à la complexité de trouver de cet algorithme
m=0;
i=1;
while (i<=n)
{
i=i*2;
for (j=1;j<=(long int)(log10(i)/log10(2));j++)
for (k=1;k<=j;k++)
m++;
}
Je pense qu'il est O (log (n) * log (log (n)) * log (log (n))):
- la boucle 'i' se déroule jusqu'au i = log (n)
- la boucle 'j' se déroule jusqu'au log (i) un moyen log (log (n))
- la La boucle 'k' court jusqu'à k = j -> k = log (i) -> k = log (log (n))
donc O (log (n) * log (log (n)) * log (log (n))).
Plus spécifiquement, je pense que la valeur de m en fonction de T serait: m (T) = choisir (T + 2, 3) + (T + 1) * (T + 2)/2 –
Simplifier, il en résulte: m (T) = (T + 1) (T + 2) (T + 3)/6 –
merci beaucoup, votre explication est très claire. m (n) est un graphique logarithmique, mais je n'ai pas compris pourquoi m (T) = choisir (T + 2, 3) + (T + 1) * (T + 2)/2 - – moti