diff --git a/slides/cours_16.md b/slides/cours_16.md
index 67fd4997a263572e9e9c7c48344071f0415e6923..2bf80b9cbd0324ea7f52604b5c51f0845346633b 100644
--- a/slides/cours_16.md
+++ b/slides/cours_16.md
@@ -1,5 +1,5 @@
 ---
-title: "Arbres"
+title: "Arbres et tri par tas"
 date: "2022-03-02"
 patat:
   eval:
@@ -218,3 +218,409 @@ flowchart TB;
 
 :::
 
+# Trier un tableau à l'aide d'un arbre binaire
+
+* Tableau représenté comme un arbre binaire.
+* Aide à comprendre "comment" trier, mais on ne construit jamais l'arbre.
+* Complexité $O(N\log_2 N)$ en moyenne et grande stabilité (pas de cas
+  dégénérés).
+
+# Lien entre arbre et tableau
+
+* La racine de l'arbre set le premier élément du tableau.
+* Les deux fils d'un noeud d'indice $i$, ont pour indices $2i+1$ et $2i+2$:
+    * Les fils du noeud $i=0$, sont à $2\cdot 0+1=1$ et $2\cdot 0+2=2$.
+    * Les fils du noeud $i=1$, sont à $2\cdot 1+1=3$ et $2\cdot 1+2=4$.
+    * Les fils du noeud $i=2$, sont à $2\cdot 2+2=5$ et $2\cdot 1+2=6$.
+    * Les fils du noeud $i=3$, sont à $2\cdot 3+1=7$ et $2\cdot 3+2=8$.
+* Un élément d'indice $i$ a pour parent l'élément $(i-1)/2$ (division entière):
+    * Le parent du noeud $i=8$ est $(8-1)/2=3$.
+    * Le parent du noeud $i=7$ est $(7-1)/2=3$.
+
+# Visuellement
+
+::: columns
+
+:::: column
+
+* Où vont les indices correspondant du tableau?
+
+```{.mermaid format=pdf width=400 loc=figs/}
+graph TD;
+    id0(( ))-->id1(( ));
+    id0-->id2(( ));
+    id1-->id3(( ));
+    id1-->id4(( ));
+    id2-->id5(( ));
+    id2-->id6(( ));
+    id3-->id7(( ));
+    id3-->id8(( ));
+    id4-->id9(( ));
+    id4-->id10(( ));    
+    style id10 fill:#fff,stroke:#fff
+```
+::::
+
+:::: column
+
+* Les flèche de gauche à droite, parent -> enfants.
+* Les flèche de droite à gauche, enfants -> parent.
+
+![Dualité tableau arbre binaire.](figs/heap_tree.svg)
+
+::::
+
+:::
+
+**Propriétés:** 
+
+1. les feuilles sont toutes sur l'avant dernier ou dernier niveau.
+2. les feuilles de profondeur maximale sont "tassée" à gauche.
+
+# Le tas (ou heap)
+
+## Définition
+
+* Un arbre est un tas, si la valeur de chacun de ses descendants est inférieure
+  ou égale à sa propre valeur.
+
+## Exemples (ou pas)
+
+```
+16  8 14 6 2 10 12 4 5 # Tas
+16 14  8 6 2 10 12 4 5 # Non-tas, 10 > 8 et 12 > 8
+```
+
+## Exercices (ou pas)
+
+```
+19 18 12 12 17 1 13 4 5 # Tas ou pas tas?
+19 18 16 12 17 1 12 4 5 # Tas ou pas tas?
+```
+
+. . .
+
+```
+19 18 12 12 17 1 13 4 5 # Pas tas! 13 > 12
+19 18 16 12 17 1 12 4 5 # Tas!
+```
+
+# Exemple de tri par tas (1/N)
+
+```
+        | 1 | 16 | 5 | 12 | 4 | 2 | 8 | 10 | 6 | 7 |
+```
+
+::: columns
+
+:::: column
+
+* Quel est l'arbre que cela représente?
+
+. . .
+
+```{.mermaid format=pdf width=400 loc=figs/}
+graph TD;
+    id0((1))-->id1((16));
+    id0-->id2((5));
+    id1-->id3((12));
+    id1-->id4((4));
+    id2-->id5((2));
+    id2-->id6((8));
+    id3-->id7((10));
+    id3-->id8((6));
+    id4-->id9((7));
+    id4-->id10(( ));    
+    style id10 fill:#fff,stroke:#fff
+```
+
+::::
+
+:::: column
+
+**But:** Transformer l'arbre en tas.
+
+* On commence à l'indice $N/2 = 5$: `7`.
+* `7 > 4` (enfant `>` parent).
+* intervertir `4` et `7`.
+
+```{.mermaid format=pdf width=400 loc=figs/}
+graph TD;
+    id0((1))-->id1((16));
+    id0-->id2((5));
+    id1-->id3((12));
+    id1-->id4((7));
+    id2-->id5((2));
+    id2-->id6((8));
+    id3-->id7((10));
+    id3-->id8((6));
+    id4-->id9((4));
+    id4-->id10(( ));    
+    style id10 fill:#fff,stroke:#fff
+```
+
+::::
+
+:::
+
+. . .
+
+```
+                            *                    *
+        | 1 | 16 | 5 | 12 | 7 | 2 | 8 | 10 | 6 | 4 |
+```
+
+# Exemple de tri par tas (2/N)
+
+```
+        | 1 | 16 | 5 | 12 | 7 | 2 | 8 | 10 | 6 | 4 |
+```
+
+::: columns
+
+:::: column
+
+**But:** Transformer l'arbre en tas.
+
+* On continue à l'indice $N/2-1 = 4$: `12`.
+* Déjà un tas, rien à faire.
+
+```{.mermaid format=pdf width=400 loc=figs/}
+graph TD;
+    id0((1))-->id1((16));
+    id0-->id2((5));
+    id1-->id3((12));
+    id1-->id4((7));
+    id2-->id5((2));
+    id2-->id6((8));
+    id3-->id7((10));
+    id3-->id8((6));
+    id4-->id9((4));
+    id4-->id10(( ));    
+    style id10 fill:#fff,stroke:#fff
+```
+
+::::
+
+:::: column
+
+**But:** Transformer l'arbre en tas.
+
+* On continue à l'indice $N/2-2 = 3$: `5`.
+* `5 < 8`, échanger `8` et `5` (aka `max(2, 5, 8)`)
+
+```{.mermaid format=pdf width=400 loc=figs/}
+graph TD;
+    id0((1))-->id1((16));
+    id0-->id2((8));
+    id1-->id3((12));
+    id1-->id4((7));
+    id2-->id5((2));
+    id2-->id6((5));
+    id3-->id7((10));
+    id3-->id8((6));
+    id4-->id9((4));
+    id4-->id10(( ));    
+    style id10 fill:#fff,stroke:#fff
+```
+
+::::
+
+:::
+
+. . .
+
+```
+        | 1 | 16 | 8 | 12 | 7 | 2 | 5 | 10 | 6 | 4 |
+```
+
+# Exemple de tri par tas (3/N)
+
+```
+        | 1 | 16 | 5 | 12 | 7 | 2 | 8 | 10 | 6 | 4 |
+```
+
+::: columns
+
+:::: column
+
+**But:** Transformer l'arbre en tas.
+
+* Indice $N/2-1 = 4$: `12`.
+* Déjà un tas, rien à faire.
+
+```{.mermaid format=pdf width=400 loc=figs/}
+graph TD;
+    id0((1))-->id1((16));
+    id0-->id2((5));
+    id1-->id3((12));
+    id1-->id4((7));
+    id2-->id5((2));
+    id2-->id6((8));
+    id3-->id7((10));
+    id3-->id8((6));
+    id4-->id9((4));
+    id4-->id10(( ));    
+    style id10 fill:#fff,stroke:#fff
+```
+
+::::
+
+:::: column
+
+**But:** Transformer l'arbre en tas.
+
+* Indice $N/2-2 = 3$: `5`.
+* `5 < 8`, `5 <=> max(2, 5, 8)`
+
+```{.mermaid format=pdf width=400 loc=figs/}
+graph TD;
+    id0((1))-->id1((16));
+    id0-->id2((8));
+    id1-->id3((12));
+    id1-->id4((7));
+    id2-->id5((2));
+    id2-->id6((5));
+    id3-->id7((10));
+    id3-->id8((6));
+    id4-->id9((4));
+    id4-->id10(( ));    
+    style id10 fill:#fff,stroke:#fff
+```
+
+::::
+
+:::
+
+```
+                   *                *
+        | 1 | 16 | 8 | 12 | 7 | 2 | 5 | 10 | 6 | 4 |
+```
+
+# Exemple de tri par tas (4/N)
+
+```
+        | 1 | 16 | 8 | 12 | 7 | 2 | 5 | 10 | 6 | 4 |
+```
+
+::: columns
+
+:::: column
+
+**But:** Transformer l'arbre en tas.
+
+* Indice $N/2-3 = 1$: `16`.
+* Déjà un tas, rien à faire.
+
+```{.mermaid format=pdf width=400 loc=figs/}
+graph TD;
+    id0((1))-->id1((16));
+    id0-->id2((5));
+    id1-->id3((12));
+    id1-->id4((7));
+    id2-->id5((2));
+    id2-->id6((8));
+    id3-->id7((10));
+    id3-->id8((6));
+    id4-->id9((4));
+    id4-->id10(( ));    
+    style id10 fill:#fff,stroke:#fff
+```
+
+::::
+
+:::: column
+
+**But:** Transformer l'arbre en tas.
+
+* Indice $N/2-4 = 1$: `1`.
+* `1 < 16 && 1 < 8`, `1 <=> max(1, 16, 8)`
+
+```{.mermaid format=pdf width=400 loc=figs/}
+graph TD;
+    id0((16))-->id1((1));
+    id0-->id2((8));
+    id1-->id3((12));
+    id1-->id4((7));
+    id2-->id5((2));
+    id2-->id6((5));
+    id3-->id7((10));
+    id3-->id8((6));
+    id4-->id9((4));
+    id4-->id10(( ));    
+    style id10 fill:#fff,stroke:#fff
+```
+
+::::
+
+:::
+
+```
+           *   *
+        | 16 | 1 | 8 | 12 | 7 | 2 | 5 | 10 | 6 | 4 |
+```
+
+
+# Exemple de tri par tas (5/N)
+
+```
+        | 16 | 1 | 8 | 12 | 7 | 2 | 5 | 10 | 6 | 4 |
+```
+
+::: columns
+
+:::: column
+
+**But:** Transformer l'arbre en tas.
+
+* Recommencer avec `1`.
+* `1 <=> max(1, 12, 7)`.
+
+```{.mermaid format=pdf width=400 loc=figs/}
+graph TD;
+    id0((16))-->id1((12));
+    id0-->id2((5));
+    id1-->id3((1));
+    id1-->id4((7));
+    id2-->id5((2));
+    id2-->id6((8));
+    id3-->id7((10));
+    id3-->id8((6));
+    id4-->id9((4));
+    id4-->id10(( ));    
+    style id10 fill:#fff,stroke:#fff
+```
+
+::::
+
+:::: column
+
+**But:** Transformer l'arbre en tas.
+
+* Recommencer avec `1`.
+* `1 <=> max(1, 10, 6)`.
+
+```{.mermaid format=pdf width=400 loc=figs/}
+graph TD;
+    id0((16))-->id1((12));
+    id0-->id2((8));
+    id1-->id3((10));
+    id1-->id4((7));
+    id2-->id5((2));
+    id2-->id6((5));
+    id3-->id7((1));
+    id3-->id8((6));
+    id4-->id9((4));
+    id4-->id10(( ));    
+    style id10 fill:#fff,stroke:#fff
+```
+
+::::
+
+:::
+
+```
+                *        *               *
+        | 16 | 12 | 8 | 10 | 7 | 2 | 5 | 1 | 6 | 4 |
+```
+
diff --git a/slides/tri_par_tas.md b/slides/tri_par_tas.md
deleted file mode 100644
index 4da67aa1fd0aac9d26720646ff92267a38af59a9..0000000000000000000000000000000000000000
--- a/slides/tri_par_tas.md
+++ /dev/null
@@ -1,410 +0,0 @@
----
-title: "Le tri par tas"
-date: "2022-03-02"
----
-
-# Trier un tableau à l'aide d'un arbre binaire
-
-* Tableau représenté comme un arbre binaire.
-* Aide à comprendre "comment" trier, mais on ne construit jamais l'arbre.
-* Complexité $O(N\log_2 N)$ en moyenne et grande stabilité (pas de cas
-  dégénérés).
-
-# Lien entre arbre et tableau
-
-* La racine de l'arbre set le premier élément du tableau.
-* Les deux fils d'un noeud d'indice $i$, ont pour indices $2i+1$ et $2i+2$:
-    * Les fils du noeud $i=0$, sont à $2\cdot 0+1=1$ et $2\cdot 0+2=2$.
-    * Les fils du noeud $i=1$, sont à $2\cdot 1+1=3$ et $2\cdot 1+2=4$.
-    * Les fils du noeud $i=2$, sont à $2\cdot 2+2=5$ et $2\cdot 1+2=6$.
-    * Les fils du noeud $i=3$, sont à $2\cdot 3+1=7$ et $2\cdot 3+2=8$.
-* Un élément d'indice $i$ a pour parent l'élément $(i-1)/2$ (division entière):
-    * Le parent du noeud $i=8$ est $(8-1)/2=3$.
-    * Le parent du noeud $i=7$ est $(7-1)/2=3$.
-
-# Visuellement
-
-::: columns
-
-:::: column
-
-* Où vont les indices correspondant du tableau?
-
-```{.mermaid format=pdf width=400 loc=figs/}
-graph TD;
-    id0(( ))-->id1(( ));
-    id0-->id2(( ));
-    id1-->id3(( ));
-    id1-->id4(( ));
-    id2-->id5(( ));
-    id2-->id6(( ));
-    id3-->id7(( ));
-    id3-->id8(( ));
-    id4-->id9(( ));
-    id4-->id10(( ));    
-    style id10 fill:#fff,stroke:#fff
-```
-::::
-
-:::: column
-
-* Les flèche de gauche à droite, parent -> enfants.
-* Les flèche de droite à gauche, enfants -> parent.
-
-![Dualité tableau arbre binaire.](figs/heap_tree.svg)
-
-::::
-
-:::
-
-**Propriétés:** 
-
-1. les feuilles sont toutes sur l'avant dernier ou dernier niveau.
-2. les feuilles de profondeur maximale sont "tassée" à gauche.
-
-# Le tas (ou heap)
-
-## Définition
-
-* Un arbre est un tas, si la valeur de chacun de ses descendants est inférieure
-  ou égale à sa propre valeur.
-
-## Exemples (ou pas)
-
-```
-16  8 14 6 2 10 12 4 5 # Tas
-16 14  8 6 2 10 12 4 5 # Non-tas, 10 > 8 et 12 > 8
-```
-
-## Exercices (ou pas)
-
-```
-19 18 12 12 17 1 13 4 5 # Tas ou pas tas?
-19 18 16 12 17 1 12 4 5 # Tas ou pas tas?
-```
-
-. . .
-
-```
-19 18 12 12 17 1 13 4 5 # Pas tas! 13 > 12
-19 18 16 12 17 1 12 4 5 # Tas!
-```
-
-# Exemple de tri par tas (1/N)
-
-```
-        | 1 | 16 | 5 | 12 | 4 | 2 | 8 | 10 | 6 | 7 |
-```
-
-::: columns
-
-:::: column
-
-* Quel est l'arbre que cela représente?
-
-. . .
-
-```{.mermaid format=pdf width=400 loc=figs/}
-graph TD;
-    id0((1))-->id1((16));
-    id0-->id2((5));
-    id1-->id3((12));
-    id1-->id4((4));
-    id2-->id5((2));
-    id2-->id6((8));
-    id3-->id7((10));
-    id3-->id8((6));
-    id4-->id9((7));
-    id4-->id10(( ));    
-    style id10 fill:#fff,stroke:#fff
-```
-
-::::
-
-:::: column
-
-**But:** Transformer l'arbre en tas.
-
-* On commence à l'indice $N/2 = 5$: `7`.
-* `7 > 4` (enfant `>` parent).
-* intervertir `4` et `7`.
-
-```{.mermaid format=pdf width=400 loc=figs/}
-graph TD;
-    id0((1))-->id1((16));
-    id0-->id2((5));
-    id1-->id3((12));
-    id1-->id4((7));
-    id2-->id5((2));
-    id2-->id6((8));
-    id3-->id7((10));
-    id3-->id8((6));
-    id4-->id9((4));
-    id4-->id10(( ));    
-    style id10 fill:#fff,stroke:#fff
-```
-
-::::
-
-:::
-
-. . .
-
-```
-                            *                    *
-        | 1 | 16 | 5 | 12 | 7 | 2 | 8 | 10 | 6 | 4 |
-```
-
-# Exemple de tri par tas (2/N)
-
-```
-        | 1 | 16 | 5 | 12 | 7 | 2 | 8 | 10 | 6 | 4 |
-```
-
-::: columns
-
-:::: column
-
-**But:** Transformer l'arbre en tas.
-
-* On continue à l'indice $N/2-1 = 4$: `12`.
-* Déjà un tas, rien à faire.
-
-```{.mermaid format=pdf width=400 loc=figs/}
-graph TD;
-    id0((1))-->id1((16));
-    id0-->id2((5));
-    id1-->id3((12));
-    id1-->id4((7));
-    id2-->id5((2));
-    id2-->id6((8));
-    id3-->id7((10));
-    id3-->id8((6));
-    id4-->id9((4));
-    id4-->id10(( ));    
-    style id10 fill:#fff,stroke:#fff
-```
-
-::::
-
-:::: column
-
-**But:** Transformer l'arbre en tas.
-
-* On continue à l'indice $N/2-2 = 3$: `5`.
-* `5 < 8`, échanger `8` et `5` (aka `max(2, 5, 8)`)
-
-```{.mermaid format=pdf width=400 loc=figs/}
-graph TD;
-    id0((1))-->id1((16));
-    id0-->id2((8));
-    id1-->id3((12));
-    id1-->id4((7));
-    id2-->id5((2));
-    id2-->id6((5));
-    id3-->id7((10));
-    id3-->id8((6));
-    id4-->id9((4));
-    id4-->id10(( ));    
-    style id10 fill:#fff,stroke:#fff
-```
-
-::::
-
-:::
-
-. . .
-
-```
-        | 1 | 16 | 8 | 12 | 7 | 2 | 5 | 10 | 6 | 4 |
-```
-
-# Exemple de tri par tas (3/N)
-
-```
-        | 1 | 16 | 5 | 12 | 7 | 2 | 8 | 10 | 6 | 4 |
-```
-
-::: columns
-
-:::: column
-
-**But:** Transformer l'arbre en tas.
-
-* Indice $N/2-1 = 4$: `12`.
-* Déjà un tas, rien à faire.
-
-```{.mermaid format=pdf width=400 loc=figs/}
-graph TD;
-    id0((1))-->id1((16));
-    id0-->id2((5));
-    id1-->id3((12));
-    id1-->id4((7));
-    id2-->id5((2));
-    id2-->id6((8));
-    id3-->id7((10));
-    id3-->id8((6));
-    id4-->id9((4));
-    id4-->id10(( ));    
-    style id10 fill:#fff,stroke:#fff
-```
-
-::::
-
-:::: column
-
-**But:** Transformer l'arbre en tas.
-
-* Indice $N/2-2 = 3$: `5`.
-* `5 < 8`, `5 <=> max(2, 5, 8)`
-
-```{.mermaid format=pdf width=400 loc=figs/}
-graph TD;
-    id0((1))-->id1((16));
-    id0-->id2((8));
-    id1-->id3((12));
-    id1-->id4((7));
-    id2-->id5((2));
-    id2-->id6((5));
-    id3-->id7((10));
-    id3-->id8((6));
-    id4-->id9((4));
-    id4-->id10(( ));    
-    style id10 fill:#fff,stroke:#fff
-```
-
-::::
-
-:::
-
-```
-                   *                *
-        | 1 | 16 | 8 | 12 | 7 | 2 | 5 | 10 | 6 | 4 |
-```
-
-# Exemple de tri par tas (4/N)
-
-```
-        | 1 | 16 | 8 | 12 | 7 | 2 | 5 | 10 | 6 | 4 |
-```
-
-::: columns
-
-:::: column
-
-**But:** Transformer l'arbre en tas.
-
-* Indice $N/2-3 = 1$: `16`.
-* Déjà un tas, rien à faire.
-
-```{.mermaid format=pdf width=400 loc=figs/}
-graph TD;
-    id0((1))-->id1((16));
-    id0-->id2((5));
-    id1-->id3((12));
-    id1-->id4((7));
-    id2-->id5((2));
-    id2-->id6((8));
-    id3-->id7((10));
-    id3-->id8((6));
-    id4-->id9((4));
-    id4-->id10(( ));    
-    style id10 fill:#fff,stroke:#fff
-```
-
-::::
-
-:::: column
-
-**But:** Transformer l'arbre en tas.
-
-* Indice $N/2-4 = 1$: `1`.
-* `1 < 16 && 1 < 8`, `1 <=> max(1, 16, 8)`
-
-```{.mermaid format=pdf width=400 loc=figs/}
-graph TD;
-    id0((16))-->id1((1));
-    id0-->id2((8));
-    id1-->id3((12));
-    id1-->id4((7));
-    id2-->id5((2));
-    id2-->id6((5));
-    id3-->id7((10));
-    id3-->id8((6));
-    id4-->id9((4));
-    id4-->id10(( ));    
-    style id10 fill:#fff,stroke:#fff
-```
-
-::::
-
-:::
-
-```
-           *   *
-        | 16 | 1 | 8 | 12 | 7 | 2 | 5 | 10 | 6 | 4 |
-```
-
-
-# Exemple de tri par tas (5/N)
-
-```
-        | 16 | 1 | 8 | 12 | 7 | 2 | 5 | 10 | 6 | 4 |
-```
-
-::: columns
-
-:::: column
-
-**But:** Transformer l'arbre en tas.
-
-* Recommencer avec `1`.
-* `1 <=> max(1, 12, 7)`.
-
-```{.mermaid format=pdf width=400 loc=figs/}
-graph TD;
-    id0((16))-->id1((12));
-    id0-->id2((5));
-    id1-->id3((1));
-    id1-->id4((7));
-    id2-->id5((2));
-    id2-->id6((8));
-    id3-->id7((10));
-    id3-->id8((6));
-    id4-->id9((4));
-    id4-->id10(( ));    
-    style id10 fill:#fff,stroke:#fff
-```
-
-::::
-
-:::: column
-
-**But:** Transformer l'arbre en tas.
-
-* Recommencer avec `1`.
-* `1 <=> max(1, 10, 6)`.
-
-```{.mermaid format=pdf width=400 loc=figs/}
-graph TD;
-    id0((16))-->id1((12));
-    id0-->id2((8));
-    id1-->id3((10));
-    id1-->id4((7));
-    id2-->id5((2));
-    id2-->id6((5));
-    id3-->id7((1));
-    id3-->id8((6));
-    id4-->id9((4));
-    id4-->id10(( ));    
-    style id10 fill:#fff,stroke:#fff
-```
-
-::::
-
-:::
-
-```
-                *        *               *
-        | 16 | 12 | 8 | 10 | 7 | 2 | 5 | 1 | 6 | 4 |
-```