3.0 KiB
Exercice 2)
Fonction 1 :
Dans cette fonction nous avons deux tableaux, un tableau 1 de longueur n
et un tableau 2 de longueur m
. Nous allons itérer sur tous les éléments du tableau 1, donc la complexité de cette boucle est de O(n)
. Ensuite, nous allons itérer sur tous les éléments du tableau 2 et vérifier si l'élément du tableau 1 est égal à l'élément du tableau 2, donc dans le meilleur des cas, la complexité de cette boucle est de O(n)
, mais dans le pire des cas, la complexité est de O(n*m)
. Donc la complexité globale de cette fonction est de O(n*m)
.
Fonction 2 :
La complexité est de O(x)
car on fait une boucle qui va itérer x
fois, jusqu'à ce que x
soit égale à 0. Dans cette boucle nous allons réaliser deux opérations avec une complexité de O(1)
, ce qui ne change pas la complexité globale qui restera à O(x)
.
Fonction 3 :
On retrouve trois blocs conditionnels qui ont chacun un coup de O(1)
et une seule condition peut être vraie. Donc la complexité globale de cette fonction est de O(1)
Exercice 3)
Fonction sort_students
:
Dans la fonction sort_students
nous retrouvons une première boucle qui va itérer sur grades_number
qu'on va noté n
et qui englobe toute la fonction.
Dans cette boucle nous allons faire une allocation mémoire avec malloc
qui a une complexité de O(1)
, ce qui veut dire que la complexité de cette boucle est de O(n * 1) = O(n)
.
Ensuite, nous avons une deuxième boucle qui va itérer sur students_number
qu'on va noté m
. Dans cette boucle nous copions les notes des étudiants pour les mettre dans le tableau grades
. Nous effectuons cette opération n
fois, donc la complexité globale de la fonction est de O(n * m)
.
Après nous appelons la fonction bubble_sort
avec le tableau grades
et students_number
comme arguments. bubble_sort
qui est une fonction de tri, où dans le pire des cas, la complexité est de O(m^2)
. Donc la complexité globale de la fonction sort_students
est de O(n * m + m^2) = O(n * m^2)
.
Nous retrouvons une dernière boucle qui va itérer sur students_number
, donc la complexité de cette boucle est de O(m)
. Dans cette boucle nous allons appeler la fonction find_rank_student
.
Fonction find_rank_student
:
Cette fonction appelle la fonction bubble_sort
avec le tableau grades_array
et students_number
comme arguments. bubble_sort
qui est une fonction de tri, où dans le pire des cas, la complexité est de O(m^2)
. Ensuite, nous avons une boucle qui va itérer sur students_number
, donc la complexité de cette boucle est de O(m)
. Donc la complexité globale de la fonction find_rank_student
est de O(m^2 + m) = O(m^2)
.
Fonction sort_students
:
La complexité de la fonction find_rank_student
est de O(m^2)
, et nous l'appelons m
fois, donc la complexité globale de la fonction sort_students
est de O(n * m^2 + m * m^2) = O(n * m^2 + m^3) = O(n*m^3)
.