Compare commits

..

No commits in common. "main" and "main" have entirely different histories.
main ... main

4 changed files with 56 additions and 79 deletions

View File

@ -1,25 +0,0 @@
premiere execution de gprof avec les arguments 100 10 1
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 1010 0.00 0.00 bubblesort
0.00 0.00 0.00 1000 0.00 0.00 find_rank_student
0.00 0.00 0.00 200 0.00 0.00 print_array
0.00 0.00 0.00 100 0.00 0.00 generate_array
0.00 0.00 0.00 2 0.00 0.00 free_array
0.00 0.00 0.00 2 0.00 0.00 print_student_array
0.00 0.00 0.00 1 0.00 0.00 generate_grades
0.00 0.00 0.00 1 0.00 0.00 generate_ranks
0.00 0.00 0.00 1 0.00 0.00 sort_students
Resultat pas tres interessant
deuxieme execution de gprof avec les arguments 1000 1000
test avec les argument 1000 10000 0
le programme a pris 30 secondes et on a remarquer que cetait bubulesort qui prend
le plus de temps a executer
finalement on va modifier le nombre de fois est appeler bubulle sort
on va essayer de profiller un de notre code

BIN
gmon.out

Binary file not shown.

Binary file not shown.

View File

@ -6,118 +6,120 @@
#include "heapsort.h"
#include "bubblesort.h"
void generate_grades(int **students_array, int students_number, int grades_number)
void generate_grades(int** students_array, int students_number, int grades_number)
{
int i = 0;
for (i = 0; i < students_number; i++)
for(i=0;i<students_number;i++)
{
students_array[i] = (int *)malloc(grades_number * sizeof(int));
generate_array(students_array[i], grades_number);
students_array[i] = (int*) malloc(grades_number*sizeof(int));
generate_array(students_array[i],grades_number);
}
}
void generate_ranks(int **students_array, int students_number, int grades_number)
void generate_ranks(int** students_array, int students_number, int grades_number)
{
int i = 0;
int j = 0;
for (i = 0; i < students_number; i++)
for(i=0;i<students_number;i++)
{
students_array[i] = (int *)malloc(grades_number * sizeof(int));
for (j = 0; j < grades_number; j++)
{
students_array[i] = (int*) malloc(grades_number*sizeof(int));
for(j=0;j<grades_number;j++)
{
students_array[i][j] = -1;
}
}
}
}
void free_array(int **students_array, int students_number)
void free_array(int** students_array, int students_number)
{
int i = 0;
for (i = 0; i < students_number; i++)
for(i=0;i<students_number;i++)
{
free(students_array[i]);
}
}
void print_student_array(int **students_array, int students_number, int grades_number)
void print_student_array(int** students_array, int students_number, int grades_number)
{
int i = 0;
printf("----------------------\n");
for (i = 0; i < students_number; i++)
for(i=0;i<students_number;i++)
{
printf("Student %d : ", i);
print_array(students_array[i], grades_number);
printf("Student %d : ",i);
print_array(students_array[i],grades_number);
}
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;
for (i = students_number - 1; i >= 0; i--)
bubblesort(grades_array,students_number);
for(i = students_number-1; i >= 0; i--)
{
if (grades_array[i] == student_grade)
{
position = students_number - i;
break;
}
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++)
{
students_rank[j][i] = find_rank_student(students_array[j][i], grades, students_number);
}
free(grades);
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++)
{
students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number);
}
free(grades);
}
}
int main(int argc, char **argv)
int main(int argc, char** argv)
{
int **student_grades = NULL;
int **student_ranks = NULL;
int** student_grades = NULL;
int** student_ranks = NULL;
int students_length = 0;
int grades_length = 0;
int debug_mode = 0;
if (argc != 4)
if(argc != 4)
{
printf("Usage : %s <number of student> <number of grade per student> <debug mode : 0|1>\n", argv[0]);
printf("Usage : %s <number of student> <number of grade per student> <debug mode : 0|1>\n",argv[0]);
return -1;
}
students_length = atoi(argv[1]);
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 *));
generate_grades(student_grades, students_length, grades_length);
generate_ranks(student_ranks, students_length, grades_length);
sort_students(student_ranks, student_grades, students_length, grades_length);
if (debug_mode)
student_grades = (int**) malloc(students_length*sizeof(int*));
student_ranks = (int**) malloc(students_length*sizeof(int*));
generate_grades(student_grades,students_length,grades_length);
generate_ranks(student_ranks,students_length,grades_length);
sort_students(student_ranks,student_grades,students_length,grades_length);
if(debug_mode)
{
print_student_array(student_grades, students_length, grades_length);
print_student_array(student_ranks, students_length, grades_length);
print_student_array(student_grades,students_length,grades_length);
print_student_array(student_ranks,students_length,grades_length);
}
free_array(student_grades, students_length);
free_array(student_ranks, students_length);
free_array(student_grades,students_length);
free_array(student_ranks,students_length);
free(student_grades);
free(student_ranks);
return 0;
}