forked from menault/TD1_DEV51_Qualite_Algo
pas réussi le thread
This commit is contained in:
20
Comte-rendu.md
Normal file
20
Comte-rendu.md
Normal file
@@ -0,0 +1,20 @@
|
||||
##Patrick Felix-Vimalaratnam
|
||||
|
||||
J'ai compilé avec :
|
||||
gcc -g -pg -o student_rank student_rank.c heapsort.c bubblesort.c
|
||||
|
||||
puis j'ai lancé :
|
||||
./student_rank 1000 1000 0
|
||||
|
||||
Dans le fichier gmon.out donner avec la commande gprof, il y a :
|
||||
- un tableau pour avoir le temps d'execution et le nombre d'appel de chaque fonctions appelées dan sle code avec une légende de chaque colonne du tableau.
|
||||
- un autre tableau mais avec un graphe de chaque appel avec aussi une légende de chaque colonne.
|
||||
- un ordre d'appel de fonction avec le nom de la fonction.
|
||||
|
||||
Il fallait supprimer l'appel à bubble_sort dans la fonction find_rank_student du fichier student_rank.
|
||||
|
||||
Pour coriger le probleme de bubble sort il faut changer la condition d'arret du do while de égale à 1 à supérieur à 0.
|
||||
|
||||
Utiliser heapsort est plus rapide qu'avec bubblesort.
|
||||
|
||||
Tentative de quicksort mais je n'ai pas réussi à faire le threading.
|
@@ -17,5 +17,5 @@ void bubblesort(int* array, int length)
|
||||
swapped++;
|
||||
}
|
||||
}
|
||||
} while(swapped==1);
|
||||
} while(swapped>0);
|
||||
}
|
||||
|
28
quicksort.c
Normal file
28
quicksort.c
Normal file
@@ -0,0 +1,28 @@
|
||||
#include "quicksort.h"
|
||||
|
||||
void quicksort(int* tab, int first, int last) {
|
||||
int pivot, i, j, tmp;
|
||||
if(first < last) {
|
||||
pivot = first;
|
||||
i = first;
|
||||
j = last;
|
||||
while (i < j) {
|
||||
while(tab[i] <= tab[pivot] && i < last){
|
||||
i++;
|
||||
}
|
||||
while(tab[j] > tab[pivot]){
|
||||
j--;
|
||||
}
|
||||
if(i < j) {
|
||||
tmp = tab[i];
|
||||
tab[i] = tab[j];
|
||||
tab[j] = tmp;
|
||||
}
|
||||
}
|
||||
tmp = tab[pivot];
|
||||
tab[pivot] = tab[j];
|
||||
tab[j] = tmp;
|
||||
quicksort(tab, first, j - 1);
|
||||
quicksort(tab, j + 1, last);
|
||||
}
|
||||
}
|
6
quicksort.h
Normal file
6
quicksort.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef __QUICKSORT__
|
||||
#define __QUICKSORT__
|
||||
|
||||
void quicksort(int* tab, int first, int last);
|
||||
|
||||
#endif
|
BIN
student_rank
Executable file
BIN
student_rank
Executable file
Binary file not shown.
@@ -5,6 +5,7 @@
|
||||
#include <stdlib.h>
|
||||
#include "heapsort.h"
|
||||
#include "bubblesort.h"
|
||||
#include "quicksort.h"
|
||||
|
||||
void generate_grades(int** students_array, int students_number, int grades_number)
|
||||
{
|
||||
@@ -55,7 +56,6 @@ 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);
|
||||
quicksort(grades,0,students_number-1);
|
||||
for(j = 0; j < students_number; j++)
|
||||
{
|
||||
students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number);
|
||||
|
Reference in New Issue
Block a user