From a7b30e8e79f2aed9836a1d444693664e3ad3998d Mon Sep 17 00:00:00 2001
From: genique <florian.genique@etu.u-pec.fr>
Date: Tue, 26 Nov 2024 11:31:30 +0100
Subject: [PATCH] readme

---
 README.md | 66 +++++++++++++++++++++++++++++++++++++++----------------
 tri.py    | 12 +++++-----
 2 files changed, 54 insertions(+), 24 deletions(-)

diff --git a/README.md b/README.md
index 8cf3f3e..4a8fa88 100644
--- a/README.md
+++ b/README.md
@@ -1,35 +1,63 @@
-# RAPPORT 
+# RAPPORT
 
 ## EXO2
 
-- function_1(tableau1, tableau2) : complexité alogithmique est égale à : O(n*m) dans le pire cas ou n est la taille du tableau 1 et m la taille du tableau 2.
-- function_2(x) : compléxité algorithmique est égale a : O(x) car la boucle while fait x itération et car x est décrémenter de 1 jusqu'a 0.
-- function_3(x) : cette fois ci la compléxité algorithmique est égale a : O(1) car en fonction de la valeur de x uniquement une des trois conditions qui effectue une opération simple.
+- **function_1(tableau1, tableau2)** :  
+  - **Complexité algorithmique** : O(n * m)  
+    - Dans le pire cas, où `n` est la taille du tableau 1 et `m` la taille du tableau 2.
 
-## EXO3 
+- **function_2(x)** :  
+  - **Complexité algorithmique** : O(x)  
+    - La boucle `while` fait `x` itérations, et `x` est décrémentée de 1 jusqu'à 0.
 
-Pour cette fonction on a : 
+- **function_3(x)** :  
+  - **Complexité algorithmique** : O(1)  
+    - En fonction de la valeur de `x`, une des trois conditions exécute une opération simple.
 
-- la premiere boucle for : O(g)
-- ensuite malloc : O(1)
-- deuxieme boucle for : O(g*n)
-- bubblesort : O(g*n²)
-- free : O(1)
-- find_rank_student : O(g*n²) de bubblesort + O(g*n) : O(g*n^3)
+---
 
+## EXO3
 
-simplification :
+Pour cette fonction, on a :
 
-- on peut enlever les O(1) et on garde la complexité la plus élévé donc O(g*n^3) 
+- **La première boucle for** : O(g)
+- **Malloc** : O(1)
+- **Deuxième boucle for** : O(g * n)
+- **Bubblesort** : O(g * n²)
+- **Free** : O(1)
+- **find_rank_student** : O(g * n²) pour Bubblesort + O(g * n) : O(g * n^3)
 
-Cela fait pour la compléxité algorithmique de sort_student : O(g*n^3)
+**Simplification :**
+- On peut enlever les O(1) et conserver la complexité la plus élevée, donc O(g * n^3).
 
+**Complexité algorithmique pour sort_student :** O(g * n^3)
+
+---
 
 ## EXO4
 
-compléxité algorithmique de ma fonction tri() :
-- pour m éléments dans chaque sous-liste n, alors la compléxité algorithmique de sort() est O(m log m) pour n sous liste on a O(n * m log m)
+Voici le code :
 
-- pour le tri la complexité algorithmique est O(n²)
+```python
+def tri(t):
+    for tab in t:
+        for i in range(len(tab)):
+            for j in range(len(tab) - 1):
+                if tab[j] > tab[j + 1]:
+                    tab[j], tab[j + 1] = tab[j + 1], tab[j]
+    
+    for i in range(len(t)):
+        for j in range(len(t) - 1):
+            if t[j][0] > t[j + 1][0]:
+                t[j], t[j + 1] = t[j + 1], t[j]
+    
+    print(t)
 
-on prend la plus elevé et donc on pour ma fonction O(n²)
\ No newline at end of file
+tri([[3, 9, 6], [9, 3, 8], [10, 67, 55]])
+
+Complexité algorithmique de ma fonction tri() :
+
+   - Pour m éléments, la complexité algorithmique de chaque sous-liste est O(m²), multipliée par le nombre de sous-listes, cela fait : O(n * m²).
+   - Pour le tri final, la complexité algorithmique est O(n²).
+
+On garde la plus élevée, donc pour ma fonction : O(n * m²) + O(n²).
\ No newline at end of file
diff --git a/tri.py b/tri.py
index 232cea3..283ce8b 100644
--- a/tri.py
+++ b/tri.py
@@ -1,12 +1,14 @@
 def tri(t):
-    # Trier chaque sous-liste individuellement
     for tab in t:
-        tab.sort()
+        for i in range(len(tab)):
+            for j in range(len(tab) - 1):
+                if tab[j] > tab[j + 1]:
+                    tab[j], tab[j + 1] = tab[j + 1], tab[j]
     
     for i in range(len(t)):
-        for j in range(i + 1, len(t)):
-            if t[i][0] > t[j][0]:
-                t[i], t[j] = t[j], t[i]
+        for j in range(len(t) - 1):
+            if t[j][0] > t[j + 1][0]:
+                t[j], t[j + 1] = t[j + 1], t[j]
     
     print(t)