From cfd384140d12e787137f29d42641553855d03ca7 Mon Sep 17 00:00:00 2001 From: Axel Pietrois <axel.pietrois@gmail.com> Date: Tue, 26 Nov 2024 11:53:45 +0100 Subject: [PATCH] TD4 --- .idea/.gitignore | 3 + .idea/TD4_DEV51_Pietrois.iml | 8 +++ .../inspectionProfiles/profiles_settings.xml | 6 ++ .idea/misc.xml | 7 ++ .idea/modules.xml | 8 +++ .idea/vcs.xml | 6 ++ Rapport.md | 30 +++++++++ main.py | 67 +++++++++++++++++++ 8 files changed, 135 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/TD4_DEV51_Pietrois.iml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 Rapport.md create mode 100644 main.py 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="PYTHON_MODULE" version="4"> + <component name="NewModuleRootManager"> + <content url="file://$MODULE_DIR$" /> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> \ 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 @@ +<component name="InspectionProjectProfileManager"> + <settings> + <option name="USE_PROJECT_PROFILE" value="false" /> + <version value="1.0" /> + </settings> +</component> \ 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Black"> + <option name="sdkName" value="Python 3.12" /> + </component> + <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12" project-jdk-type="Python SDK" /> +</project> \ 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/.idea/TD4_DEV51_Pietrois.iml" filepath="$PROJECT_DIR$/.idea/TD4_DEV51_Pietrois.iml" /> + </modules> + </component> +</project> \ 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="" vcs="Git" /> + </component> +</project> \ 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<br> +> 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²) +> <br> 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 +> <br> Pour le premier bubblesort, il y a la fonction sum() utilisée, possédant une complexité de O(M) +> <br> 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)