J'ai essayé avec 100000 étudiant et 10000 notes sans debug, ça prend beacoup de temps
Ensuite avec 1000 étudiant et 1000 notes, ça prend environ 3 secondes.
Puis avec 5 fois plus d'étudiant, ça prend 1 minutes et 18 secondes.
Avec 1000 étudiants et 1000 notes sans debug on utilise gprof pour le profiling.
On peut voir que les fonctions qui prennent le plus de temps sont find_rank_student et bubblesort avec bubblesort qui prend 81.43 % du temps d'exécution.
On modifie d'abord bubblesort pour qu'il fonctionne correctement en remplaçant swapped ++ par swapped = 1.
Ensuite on supprime le bubblesort qui est dans la fonction find_rank_student pour gagner du temps sauf qu'on ne gagne pas assez de temps pour passer en dessous d'une secondes.
Quand on remplace le bubblesort restant par heapsort, c'est beacoup plus rapide sauf que le tri ne ce fait pas bien.