diff --git a/lessons/contenu_cours_4.md b/lessons/contenu_cours_4.md index ec0a2cadc69a0f85e9ba305e4865421a7dfe0ca3..b050ccc1f51a5c0c692b52b404104c28e84027ea 100644 --- a/lessons/contenu_cours_4.md +++ b/lessons/contenu_cours_4.md @@ -1,9 +1,42 @@ -# Algorithmes et structures de données 2019-20 +# Algorithmes et structures de données 2020-21 -Contenu du cours 4 du 9.10.2019 +Contenu du cours 4 du 7.10.2020 ***** +## Crible d’Eratosthène + +- Retour sur les tableaux à 1 dimension + +## Type article (enregistrement, record) : `struct` + +- Un article permet de regrouper des types de nature différente (appelés champs) comme composant d'un type composé. + +- Exemples de `struct`: +```C + struct fraction { + int num; + int den; + }; + + enum mois { + jan=1,feb,mar,apr,mai,jun,jul,aug,sep,oct,nov,dec + }; + struct date { + int day; + mois month; + int year; + } + + enum sexe {FEM, MASC, AUTRE}; + struct employe { + char nom[80]; + sexe genre; + int age; + float salaire; + } +``` + ## Fonction cube d'un nombre ```C @@ -91,52 +124,3 @@ Contenu du cours 4 du 9.10.2019 end for end tri_selection ``` - -## Le tri par insertion - -- Algorithme appliqué au tableau: **4 7 6 1 2** - - 1ère étape : 4 **7** 6 1 2 - - trouver la position `pos` de 7 dans le sous-tableau trié à 1 élément : **4** - - décaler de 1 les éléments de la position `pos=1` à la fin du sous-tableau - - insérer l'élément 7 en position `pos=1` - - - 2ème étape : 4 7 **6** 1 2 - - trouver la position `pos` de 6 dans le sous-tableau trié à 2 éléments : **4 7** - - décaler de 1 les éléments de la position `pos=1` à la fin du sous-tableau - - insérer l'élément 6 en position `pos=1` - - - 3ème étape : 4 6 7 **1** 2 - - trouver la position `pos` de 1 dans le sous-tableau trié à 3 éléments : **4 6 7** - - décaler de 1 les éléments de la position `pos=0` à la fin du sous-tableau - - insérer l'élément 1 en position `pos=0` - - - 4ème étape : 1 4 6 7 **2** - - trouver la position `pos` de 2 dans le sous-tableau trié à 4 éléments : **1 4 6 7** - - décaler de 1 les éléments de la position `pos=1` à la fin du sous-tableau - - insérer l'élément 2 en position `pos=1` - - - On obtient le tableau trié: **1 2 4 6 7** - -## Tri à bulles - -- Algorithme appliqué au tableau **4 7 6 2 1** - - Principe : on parcours le tableau depuis et on permute les éléments successifs s'ils sont dans le désordre - **4 7** 6 2 1 - 4 **7 6** 2 1 - 4 6 **7 2** 1 - 4 6 2 **7 1** - 4 6 2 1 7 -A la fin de cette traversée, le plus grand élément se trouve en dernière position. - - - On applique à nouveau ce principe, mais sur le tableau allant de la 1ère à l'avant-dernière case du tableau - **4 6** 2 1 7 - 4 **6 2** 1 7 - 4 2 **6 1** 7 - 4 2 1 6 7 - - - Et ainsi de suite ... - - - En 4 étapes nécessitant 4, puis 3, puis 2, et finalement 1, opérations de comparaison-échange, on obtient un tableau trié. - Donc en 4+3+2+1 = 5**·**4/2 = 10 opérations, on a un tableau trié. - - - Plus généralement, un tableau à N éléments se trie en N(N-1)/2 opérations avec le tri à bulles. \ No newline at end of file