\par\quad Maintenant, analysons le second algorithme. Pour celui-ci, partons nous ommettrons l'analyse des instructions fixes, car la réelle compléxité des algorithme se base notamment sur les tours de boucles au sein du programme.
\par\quad La première boucle sert à récupérer les valeurs maximales du tableau. Le nombre de tours que celle-ci effectue est donc égale à la taille du tableau. Appelons cette taille $N$.
\par\quad L'instruction "calloc" qui suit cette boucle initialise un tableau de pointeur en initialisant toute les valeurs par defaut à "NULL". Ce tableau est composé de toute les valeurs possible entre la valeur minimale du tableau, et la valeur maximale. C'est-à-dire, si la valeur maximal est 7 et la valeur minimale est 4, ce tableau sera composé de 3 cases. La complexité de cette instruction est donc dépendante de l'écart entre ces deux valeurs. Appelons cette écart $P$.
\par\quad La seconde boucle for compte le nombre de valeurs identiques et stocke ce nombre dans le tableau compteur décrit juste avant. Cette boucle tourne autant de fois qu'il y a de valeurs dans le tableau.