forked from menault/TD1_DEV51_Qualite_Algo
Good Job !
This commit is contained in:
9
Notes.txt
Normal file
9
Notes.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
On remarque un goulot d'étranglement sur la fonction "bubblesort" qui accapare les 3/4 du temps d'exécution global.
|
||||||
|
Après trois essais, on remarque que la proportion du temps utilisé par la fonction "bubblesort" varie de 75 à 80 %. Le reste étant utilisé par la fonction "find_rank_student".
|
||||||
|
|
||||||
|
Il y a beaucoup d'appels à bubblesort.
|
||||||
|
|
||||||
|
Correction de l'algorythme de trie à bulles et suppression de l'appel dans "find_rank_student".
|
||||||
|
Résultat : il y a moins d'appel mais c'est aussi long.
|
||||||
|
|
||||||
|
Modifier l'algorythme de tri pour "heapsort" plus efficace avec les grands tableaux.
|
@@ -17,5 +17,5 @@ void bubblesort(int* array, int length)
|
|||||||
swapped++;
|
swapped++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while(swapped==1);
|
} while(swapped > 0);
|
||||||
}
|
}
|
||||||
|
@@ -51,39 +51,51 @@ void print_student_array(int** students_array, int students_number, int grades_n
|
|||||||
printf("----------------------\n");
|
printf("----------------------\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
int find_rank_student(int student_grade, int* grades_array, int students_number)
|
int find_rank_student(int student_grade, int* grades_array, int students_number){
|
||||||
{
|
|
||||||
int position = -1;
|
int position = -1;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
bubblesort(grades_array,students_number);
|
//bubblesort(grades_array,students_number);
|
||||||
for(i = students_number-1; i >= 0; i--)
|
for(i = students_number-1; i >= 0; i--){
|
||||||
{
|
if(grades_array[i] == student_grade){
|
||||||
if(grades_array[i] == student_grade)
|
|
||||||
{
|
|
||||||
position = students_number-i;
|
position = students_number-i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sort_students(int** students_rank, int** students_array, int students_number, int grades_number)
|
void sort_students(int** students_rank, int** students_array, int students_number, int grades_number){
|
||||||
{
|
|
||||||
int i = 0, j = 0;
|
int i = 0, j = 0;
|
||||||
for(i = 0; i < grades_number; i++)
|
for(i = 0; i < grades_number; i++){
|
||||||
{
|
|
||||||
int * grades = (int*) malloc(students_number*sizeof(int));
|
int * grades = (int*) malloc(students_number*sizeof(int));
|
||||||
for(j = 0; j < students_number; j++)
|
for(j = 0; j < students_number; j++){
|
||||||
{
|
|
||||||
grades[j] = students_array[j][i];
|
grades[j] = students_array[j][i];
|
||||||
}
|
}
|
||||||
bubblesort(grades,students_number);
|
heapsort(grades,students_number);
|
||||||
for(j = 0; j < students_number; j++)
|
for(j = 0; j < students_number; j++){
|
||||||
{
|
|
||||||
students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number);
|
students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number);
|
||||||
}
|
}
|
||||||
free(grades);
|
free(grades);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
int *grades = (int*) malloc(students_number, sizeof(int[2]));
|
||||||
|
|
||||||
|
int i, g ;
|
||||||
|
const int c = 1 ;
|
||||||
|
for(i = 0 ; i < students_number ; i++){
|
||||||
|
grades[i][0] = i ;
|
||||||
|
}
|
||||||
|
for(g = 0 ; g < grades_number ;g++){
|
||||||
|
for(i = 0 ; i < students_number ; i++){
|
||||||
|
grades[i][g+c] = student_grades[i][g] ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
free_array(grades,students_number);
|
||||||
|
free(grades);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
@@ -103,8 +115,8 @@ int main(int argc, char** argv)
|
|||||||
grades_length = atoi(argv[2]);
|
grades_length = atoi(argv[2]);
|
||||||
debug_mode = atoi(argv[3]);
|
debug_mode = atoi(argv[3]);
|
||||||
|
|
||||||
student_grades = (int**) malloc(students_length*sizeof(int*));
|
student_grades = (int**) malloc(students_length*sizeof(int*)); //notes
|
||||||
student_ranks = (int**) malloc(students_length*sizeof(int*));
|
student_ranks = (int**) malloc(students_length*sizeof(int*)); //rands
|
||||||
generate_grades(student_grades,students_length,grades_length);
|
generate_grades(student_grades,students_length,grades_length);
|
||||||
generate_ranks(student_ranks,students_length,grades_length);
|
generate_ranks(student_ranks,students_length,grades_length);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user