Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
828e40575b |
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++;
|
||||
}
|
||||
}
|
||||
} 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");
|
||||
}
|
||||
|
||||
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 i = 0;
|
||||
bubblesort(grades_array,students_number);
|
||||
for(i = students_number-1; i >= 0; i--)
|
||||
{
|
||||
if(grades_array[i] == student_grade)
|
||||
{
|
||||
//bubblesort(grades_array,students_number);
|
||||
for(i = students_number-1; i >= 0; i--){
|
||||
if(grades_array[i] == student_grade){
|
||||
position = students_number-i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
for(i = 0; i < grades_number; i++)
|
||||
{
|
||||
for(i = 0; i < grades_number; i++){
|
||||
int * grades = (int*) malloc(students_number*sizeof(int));
|
||||
for(j = 0; j < students_number; j++)
|
||||
{
|
||||
grades[j] = students_array[j][i];
|
||||
}
|
||||
bubblesort(grades,students_number);
|
||||
for(j = 0; j < students_number; j++)
|
||||
{
|
||||
for(j = 0; j < students_number; j++){
|
||||
grades[j] = students_array[j][i];
|
||||
}
|
||||
heapsort(grades,students_number);
|
||||
for(j = 0; j < students_number; j++){
|
||||
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)
|
||||
@@ -103,8 +115,8 @@ int main(int argc, char** argv)
|
||||
grades_length = atoi(argv[2]);
|
||||
debug_mode = atoi(argv[3]);
|
||||
|
||||
student_grades = (int**) malloc(students_length*sizeof(int*));
|
||||
student_ranks = (int**) malloc(students_length*sizeof(int*));
|
||||
student_grades = (int**) malloc(students_length*sizeof(int*)); //notes
|
||||
student_ranks = (int**) malloc(students_length*sizeof(int*)); //rands
|
||||
generate_grades(student_grades,students_length,grades_length);
|
||||
generate_ranks(student_ranks,students_length,grades_length);
|
||||
|
||||
|
Reference in New Issue
Block a user