diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/TD4_DEV51_Pietrois.iml b/.idea/TD4_DEV51_Pietrois.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/.idea/TD4_DEV51_Pietrois.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..db8786c --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..13e4be2 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Rapport.md b/Rapport.md new file mode 100644 index 0000000..1548450 --- /dev/null +++ b/Rapport.md @@ -0,0 +1,30 @@ +# TD4: Complexité algorithmique + +## Exercice 2 + +### function_1(tableau1,tableau2) +> La complexité de cette fonction est de O(n*m) avec n la taille du premier tableau et m la taille du second +> puisque le second tableau est parcouru n fois. + +### function_2(x) +> La complexité de cette fonction est de O(n) car x réduit de 1 à chaque itération jusqu'à atteindre 0. + +### function_3(x) +> La complexité de cette fonction est de O(1) car il n'y a pas de boucle ni d'appel à d'autres fonctions. + +## Exercice 3 + +> On a une boucle qui englobe toute la fonction
+> A l'interieur de cette boucle on a : +> - une boucle de complexité O(n) +> - un bubblesort de complexité O(n²) +> - une boucle contenant find_rank_student +> +> find_rank_student possède à la fois une boucle et un bubblesort, on a donc une complexité de O(n+n²) qu'on peut simplifier en O(n²) +>
On a donc une complexité de O(m * n + n² + n²) que l'on peut simplifier en O(m * n²) + +## Exercice 4 + +> Mon algorithme de tri est composé de deux bubblesort avec une complexité de O(N²) chacun +>
Pour le premier bubblesort, il y a la fonction sum() utilisée, possédant une complexité de O(M) +>
L'algorithme est donc de complexité O(M*N²) \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..96b9a35 --- /dev/null +++ b/main.py @@ -0,0 +1,67 @@ +import random + + +def function_1(tableau1,tableau2): + presentDansDeuxListes = 0 + for nombre1 in tableau1: + for nombre2 in tableau2: + if nombre1 == nombre2: + presentDansDeuxListes += 1 + break + return presentDansDeuxListes + + +def function_2(x): + valeur = 0 + while x > 0: + valeur = valeur + x + x -= 1 + return valeur + + +def function_3(x): + valeur = 0 + if x < 0: + valeur = -x + if x == 0: + pass + if x > 0: + valeur = x + return valeur + + + + + +def algo_tri(tab): + N=len(tab) + M=len(tab[0]) + for i in range(len(tab)): + for j in range(0, len(tab)-i-1): + if (sum(tab[j]) > sum(tab[j+1])): + temp = tab[j] + tab[j] = tab[j+1] + tab[j+1] = temp + + for t in tab: + for i in range(len(t)): + for j in range(0, len(t)-i-1): + if (t[j] > t[j+1]): + temp = t[j] + t[j] = t[j+1] + t[j+1] = temp + + +data = [] +for i in range(10): + data.append([random.choice(range(10000)) for _ in range(3)]) + +print(data) +algo_tri(data) +print(data) +string = "" +for i in data: + string += "[" + string += str(sum(i)) + string += "]," +print(string)