From 3e0f1ff0074503c7b14693020d33007d082a5b80 Mon Sep 17 00:00:00 2001 From: schied Date: Tue, 26 Nov 2024 14:07:11 +0100 Subject: [PATCH] Ajout d'une partie du TP --- README.md | 86 +++++++++++++++++++++++++++++++++++++++++++++++ sort_algorithm.py | 0 2 files changed, 86 insertions(+) create mode 100644 README.md create mode 100644 sort_algorithm.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..8ebf37a --- /dev/null +++ b/README.md @@ -0,0 +1,86 @@ +# TD4_DEV51_Qualite_Algo +###### par SCHIED Killian + +## Exercice 2 + +### Fonction 1 + +La complexité algorithmique de la fonction 1 est de O(n*m) dans le pire des cas (si on explore l'intégralité des 2 tableaux) ou de O(n+m) dans le meilleur des cas (si les 2 tableaux contiennent une liste qu'avec la même valeur (par exemple un tableau qui contient que des 1)). + +### Fonction 2 + +La complexité algorithmique de la fonction 2 est de O(x) dans le pire des cas (si le nombre est positif, il va le décrémenter de 1 jusqu'à qu'il soit égal à 0) ou de O(1) dans le meilleur des cas (si le nombre et négatif, il va retourner directement la valeur). + +### Fonction 3 + +La complexité algorithmique de la fonction 3 est de O(1) car il change valeur si x est supérieur, égal ou inférieur à 0 puis il retourne la valeur. + +## Exercice 3 + +La complexité algorithmique de la fonction "sort_students" est de : O(n*(m^3)). + +``` +// O(n*(m^3)) (on garde seulement m^3 et les autres s'annulent) +void sort_students(int** students_rank, int** students_array, int students_number, int grades_number) +{ + int i = 0, j = 0; + // O(n) + for(i = 0; i < grades_number; i++) + { + int * grades = (int*) malloc(students_number*sizeof(int)); // O(1) + // O(m) + for(j = 0; j < students_number; j++) + { + grades[j] = students_array[j][i]; + } + bubblesort(grades,students_number); // O(m^2) + // O(m*m^2) <=> O(m^3) + for(j = 0; j < students_number; j++) + { + students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number); // O(m^2) + } + free(grades); // O(1) + } +} + +// O(n^2) +void bubblesort(int* array, int length) +{ + int swapped, i, tmp; + do + { + swapped = 0; + for(i=1;i array[i]) + { + tmp = array[i-1]; + array[i-1] = array[i]; + array[i] = tmp; + swapped++; + } + } + } while(swapped==1); +} + +// O(n^2) (car O(n) s'annule) +int find_rank_student(int student_grade, int* grades_array, int students_number) +{ + int position = -1; + int i = 0; + bubblesort(grades_array,students_number); // O(n^2) + // O(n) + for(i = students_number-1; i >= 0; i--) + { + if(grades_array[i] == student_grade) + { + position = students_number-i; + break; + } + } + return position; +} +``` + +## Exercice 4 + diff --git a/sort_algorithm.py b/sort_algorithm.py new file mode 100644 index 0000000..e69de29