From 38dadaa0b43de266cf568defb93183880dbbe86d Mon Sep 17 00:00:00 2001 From: dubreuil Date: Wed, 10 Sep 2025 17:24:24 +0200 Subject: [PATCH] ajout td1 --- bubblesort.c | 2 +- gmon.out | Bin 0 -> 4144 bytes heapsort.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ heapsort.h | 7 +++++++ rendu.txt | 24 +++++++++++++++++++++++ student_rank | Bin 0 -> 22744 bytes student_rank.c | 5 +++-- 7 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 gmon.out create mode 100644 rendu.txt create mode 100755 student_rank diff --git a/bubblesort.c b/bubblesort.c index a848827..2ad5aaa 100644 --- a/bubblesort.c +++ b/bubblesort.c @@ -17,5 +17,5 @@ void bubblesort(int* array, int length) swapped++; } } - } while(swapped==1); + } while(swapped > 0); } diff --git a/gmon.out b/gmon.out new file mode 100644 index 0000000000000000000000000000000000000000..7d0b1b62d7ec1f714b9ac893386d335e8b7e1694 GIT binary patch literal 4144 zcmYe#&Cg?GzyVTZArdj{3=Am@3=GAo$@zIH#SlRT1~>yIFiMYxz-S1JhQMeDjE2By z2#kgR$M1Vjk2f_=)!z{bG9zyoFvBmr^_3)lgO<|T-w%)rC|5@%&lW=LQV zVBlw9W)NiHVPIzf=>TgWf?$HGVPpWYm>3wr5F%&{7K5;nNoEF+{R~KC16&$p3ImD@ zwBd52jL{GvH3T3j4WtXiVgaW)76vA0$^@laP6kBI1*sdw^a}yT1|f)L?<66#fI0&M zqk|}f^IRH2g9SH01sy~nf(#G8vN9eJgK*TL#(?6O@d8wEBeLKJsNgcFcCbnVaftR9 zVF(QtbigLa0Ch^g6hx()5F-O)0h-{oWF`j24QPU3l?*ZvZKt7 0, cela fonctionne. + +En utilisant gprof, on se rend compte que le programme prend autant de temps mais utilise moins d'appel. (1000 contre 1 000 000) + +Pour optimiser le code, on peut utiliser un autre algo de tri comme heapsort. + +Dans le fichier heapsort.c, des fonctions d'un algo de tri plus rapide sont disponibles : quicksort. + + + + diff --git a/student_rank b/student_rank new file mode 100755 index 0000000000000000000000000000000000000000..32108d46c52e4b8dcc04ba4776c7ce2849cf532e GIT binary patch literal 22744 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 XL8mstcnDerJjKSqkcXxLjmrQ4?@D}? literal 0 HcmV?d00001 diff --git a/student_rank.c b/student_rank.c index af84003..08946fe 100644 --- a/student_rank.c +++ b/student_rank.c @@ -55,7 +55,7 @@ int find_rank_student(int student_grade, int* grades_array, int students_number) { int position = -1; int i = 0; - bubblesort(grades_array,students_number); + for(i = students_number-1; i >= 0; i--) { if(grades_array[i] == student_grade) @@ -77,7 +77,8 @@ void sort_students(int** students_rank, int** students_array, int students_numbe { grades[j] = students_array[j][i]; } - bubblesort(grades,students_number); + /*heapsort(grades,students_number);*/ + tri_rapide(grades, 200, 210); for(j = 0; j < students_number; j++) { students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number);