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)