Skip to content

Commit 97d2b8f

Browse files
Leoriem-codePanquesito7appgurueu
authored
Add insertion sort explanation + corrected grammar (#147)
* corrected mistakes (again) * Add insertion sort explanation + corrected grammar * Update Tri_par_insertion and add examples * add sections on other algorithms * changed how examples were shown * Update Tri_par_insertion.md * typo in example Co-authored-by: David Leal <[email protected]> Co-authored-by: Lars Müller <[email protected]>
1 parent 514b368 commit 97d2b8f

23 files changed

+98
-50
lines changed

fr/Exemples/.gif/Determinant.gif

-15.5 MB
Binary file not shown.

fr/Exemples/.gif/FibonacciNormal.gif

-4.24 MB
Binary file not shown.
-1.93 MB
Binary file not shown.

fr/Exemples/.gif/FindMax.gif

-26.3 MB
Binary file not shown.

fr/Exemples/.gif/FindMin.gif

-25.3 MB
Binary file not shown.

fr/Exemples/README.md

-9
This file was deleted.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2.82 MB
Binary file not shown.
1.21 MB
Binary file not shown.

fr/Exemples/tri/TriInsertionPire.mp4

4.38 MB
Binary file not shown.

fr/README.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,32 @@
22

33
## Description
44

5-
Ecrivez une courte desciption de l'algorithme:
5+
Écrivez une courte description de l'algorithme :
66

77
1. Complexité temporelle
88
2. Complexité spatiale
99
3. Applications possibles
1010
4. Nom de l'auteur
11-
5. etc...
11+
5. ...
1212

1313
## Étapes
1414

1515
Décrire l'algorithme en étapes concises et compréhensibles.
1616

1717
## Exemple
1818

19-
Ecrivez le fonctionnement de l'algorithme avec un exemple.
19+
Écrivez le fonctionnement de l'algorithme avec un exemple.
2020

21-
## Implementation
21+
## Implémentation
2222

23-
Liens vers des implementation de ce programme dans des languages.
24-
NOTE: Merci de ne mettre des liens que vers les dossiers de cette organisation.
25-
Si le programme n'existe pas dans un language, n'hésitez pas à le rajouter!
23+
Liens vers des implémentations de ce programme dans des langages.
24+
NOTE : Merci de ne mettre des liens que vers les dossiers de cette organisation.
25+
Si le programme n'existe pas dans un langage, n'hésitez pas à le rajouter !
2626

2727
## Vidéo
2828

2929
Lien vers une vidéo qui explique le fonctionnement de l'algorithme.
3030

3131
## Autres
3232

33-
D'autres informations sont toujours les bienvenues and doivent être inclues dans cette section.
33+
D'autres informations sont toujours les bienvenues and doivent être incluses dans cette section.

fr/ToDo.md

+2
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@
77
* montrer reponse
88
* math
99
* Basiquement tout
10+
* tri
11+
* basiquement tout
1012
* Tout le reste

fr/filtres_audio/filtre_butterworth.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
### Principe
66

7-
* Le filtre de Butterworth est originellement un filtre passe-bas, et c'est le filtre le plus utilisé du fait de son gain extrêment plat dans la zone passe-bande.
8-
* L'avantage d'un tel filtre est d'amplifier toute les fréquences voulues de façon uniforme, au lieu d'amplifier certaines fréquences plus que d'autre comme le faisaient les filtres en usage avant sa découverte (les filtres [elliptiques](https://fr.wikipedia.org/wiki/Filtre_elliptique) et [de Tchebychev](https://fr.wikipedia.org/wiki/Filtre_de_Tchebychev)).
7+
* Le filtre de Butterworth est originellement un filtre passe-bas, et c'est le filtre le plus utilisé du fait de son gain extrêmement plat dans la zone passe-bande.
8+
* L'avantage d'un tel filtre est d'amplifier toutes les fréquences voulues de façon uniforme, au lieu d'amplifier certaines fréquences plus que d'autre comme le faisaient les filtres en usage avant sa découverte (les filtres [elliptiques](https://fr.wikipedia.org/wiki/Filtre_elliptique) et [de Tchebychev](https://fr.wikipedia.org/wiki/Filtre_de_Tchebychev)).
99
* De plus, Butterworth a prouvé que le filtre passe-bas pouvait être modifié facilement afin de donner des filtres passe-haut, passe-bande ou coupe-bande.
10-
* La fonction de transfert d'un filtre de Butterworth passe-bas d'ordre $n$ dans le domaine fréquentielle est:
10+
* La fonction de transfert d'un filtre de Butterworth passe-bas d'ordre $n$ dans le domaine fréquentielle est :
1111
$$\tag{avec $p_k=\omega_ce^{\frac{j(2k+n-1)\pi}{2n}}$}H(p) = \frac{G_0}{\prod^n_{k=1}(p-p_k)/\omega_c}$$
1212

1313
### Complexités

fr/math/Determinant.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@
44

55
### Principe
66

7-
* Calculer le déterminant d'un matrice permet de savoir si elle est inversible ou non.
8-
* Avoir cette information en elle-même ne sert pas à grand chose mais si cette matrice représente (par exemple) un système d'équation, cela permet de savoir si ce système possède une solution.
7+
* Calculer le déterminant d'une matrice permet de savoir si elle est inversible ou non.
8+
* Avoir cette information en elle-même ne sert pas à grand-chose, mais si cette matrice représente (par exemple) un système d'équation, cela permet de savoir si ce système possède une solution.
99

1010
### Complexités
1111

1212
* L'algorithme possède une complexité temporelle de l'ordre de $n!$ (À vérifier).
13-
* On utilise une fonction récursive, ce qui est gourmant en terme de mémoire.
13+
* On utilise une fonction récursive, ce qui est gourmand en termes de mémoire.
1414

1515
### Applications
1616

1717
* Trouver le déterminant d'une matrice permet de savoir si on peut utiliser la méthode du pivot de Gauss ou pas.
1818

1919
## Étapes
2020

21-
* Puisque le déterminant n'est défini que pour les matrices carrés, il faut d'abord vérifier que la matrice est carré.
21+
* Puisque le déterminant n'est défini que pour les matrices carrées, il faut d'abord vérifier que la matrice est carré.
2222
* Ensuite, nous développons la matrice par rapport à la première ligne.
23-
* On répète ces étapes à la matrice ainsi développer jusqu'à tomber sur une matrice 2x2, où on applique la formule connue $\bigg(\begin{vmatrix}a&b\\c&d\end{vmatrix}=ad-cb\bigg)$.
23+
* On répète ces étapes à la matrice ainsi développer jusqu'à tomber sur une matrice 2×2, où on applique la formule connue $\bigg(\begin{vmatrix}a&b\\c&d\end{vmatrix}=ad-cb\bigg)$.
2424
* De là, on remonte la cascade d'appel en effectuant les calculs.
2525

2626
## Exemple
@@ -29,12 +29,12 @@ Calculons le déterminant de la matrice $\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{
2929

3030
### Exemple en vidéo
3131

32-
![Exemple Determinant](../Exemples/.gif/Determinant.gif)
32+
* [Déterminant](../Exemples/math/Determinant.mp4)
3333

3434
### Conclusion
3535

3636
Le déterminant de $\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix}$ est $0$.
3737

38-
## Implementation
38+
## Implémentation
3939

4040
* [Python](https://github.com/TheAlgorithms/Python/blob/master/linear_algebra/src/lib.py)

fr/math/Suite_de_Fibonacci.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44

55
### Principe
66

7-
* La suite de Fibonacci est définie mathématiquement de la sorte:
7+
* La suite de Fibonacci est définie mathématiquement de la sorte :
88
$$
99
\begin{cases}
1010
F(0) = 0\\
1111
F(1) = 1\\
1212
\forall n \in \natnums / n \ge 2, F(n) = F(n-2) + F(n-1)
1313
\end{cases}
1414
$$
15-
* Cela signifie que chaque terme est la somme des 2 termes précédents, en ayant pour termes de départ 0 et 1.
16-
La suite ressemble à ceci:
15+
* Cela signifie que chaque terme est la somme des deux termes précédents, en ayant pour termes de départ 0 et 1.
16+
La suite ressemble à ceci :
1717
$$0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, \ldots$$
1818
\
1919
De nombreux algorithmes existent pour calculer les nombres de la suite, mais nous allons ici nous intéresser à l'implémentation la plus directe.
@@ -35,12 +35,12 @@ Dans notre exemple nous cherchons à calculer F(6), le 7ème terme de la suite.
3535

3636
### Exemple en vidéo
3737

38-
![Fibonacci normal](../Exemples/.gif/FibonacciNormal.gif)
38+
* [Fibonacci normal](../Exemples/math/FibonacciNormal.mp4)
3939

4040
### Conclusion
4141

4242
On a donc $F(6) = 8$
4343

44-
## Implementation
44+
## Implémentation
4545

4646
* [Python](https://github.com/TheAlgorithms/Python/blob/master/maths/fibonacci.py)

fr/math/Suite_de_Fibonacci_récursive.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,44 @@
44

55
### Principe
66

7-
* La suite de Fibonacci est définie mathématiquement de la sorte:
7+
* La suite de Fibonacci est définie mathématiquement de la sorte :
88
$$
99
\begin{cases}
1010
F(0) = 0\\
1111
F(1) = 1\\
1212
\forall n \in \natnums / n \ge 2, F(n) = F(n-2) + F(n-1)
1313
\end{cases}
1414
$$
15-
* Cela signifie que chaque terme est la somme des 2 termes précédents, en ayant pour termes de départ 0 et 1.
16-
La suite ressemble à ceci:
15+
* Cela signifie que chaque terme est la somme des deux termes précédents, en ayant pour termes de départ 0 et 1.
16+
La suite ressemble à ceci :
1717
$$0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, \ldots$$
1818
\
1919
De nombreux algorithmes existent pour calculer les nombres de la suite, mais nous allons ici nous intéresser à l'implémentation la plus immédiate/directe, celle qui est récursive.
2020

2121
### Complexités
2222

23-
* Cette algorithme n'est pas optimale et prends beaucoup de place et de temps à se terminer.
23+
* Cet algorithme n'est pas optimal et prends beaucoup de place et de temps à se terminer.
2424
Plus précisement, la complexité temporelle de ce programme est $\phi^n$ ($\phi$ étant le nombre d'or), et sa complexité spatiale est $2^n$.
2525

2626
## Étapes
2727

2828
* La première étape consiste à appeler $F(n-2)$ et $F(n-1)$.
2929
* La deuxième consite à appeler $F(n-4)$ et $F(n-3)$ (venant de $F(n-2)$) ainsi que $F(n-3)$ et $F(n-2)$ (venant de $F(n-1)$).
3030
* Ainsi de suite, jusqu'à appeler $F(1)$ ou $F(0)$, où on peut commencer à remonter la cascade d'appel et à additionner les termes.
31-
* On a à la fin $F(n)$.
31+
* On obtient à la fin $F(n)$.
3232

3333
## Exemple
3434

35-
Dans notre exemple nous cherchons à calculer F(4), le 5ème terme de la suite.
35+
Dans notre exemple nous cherchons à calculer $F(4)$, le 5ème terme de la suite.
3636

3737
### Exemple en vidéo
3838

39-
![Fibonnaci récursif](../Exemples/.gif/FibonacciRécursif.gif)
39+
* [Fibonacci récursif](../Exemples/math/FibonacciRecursif.mp4)
4040

4141
### Conclusion
4242

4343
On a donc $F(4) = 3$
4444

45-
## Implementation
45+
## Implémentation
4646

4747
* [Python](https://github.com/TheAlgorithms/Python/blob/master/maths/fibonacci_sequence_recursion.py)

fr/math/Trouver_Maximum.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
### Principe
66

7-
* L'algorithme est directe: on parcours toute la liste de nombre et on retiens le plus grand nombre rencontré jusqu'à ce point.
7+
* L'algorithme est direct : on parcourt toute la liste de nombre et on retient le plus grand nombre rencontré jusqu'à ce point.
88

99
### Complexités
1010

@@ -17,13 +17,13 @@
1717

1818
### Auteurs
1919

20-
* Au vue de la très grande utilité et de la simplicité de cette algorithme, de nombreuses personnes l'ont très certainement mis au point en même temps.
20+
* À la vue de la très grande utilité et de la simplicité de cet algorithme, de nombreuses personnes l'ont très certainement mis au point en même temps.
2121

2222
## Étapes
2323

2424
* En premier lieu, il faut initialiser le maximum. Pour cela, on dit que le maximum est égale au 1er terme de la liste.
25-
* Attention! Il ne faut pas prendre pour 1er maximum 0 car si notre liste est composée uniquement de nombres $< 0$, on ne vas pas avoir un maximum correct.
26-
* Pour la même raison, il ne faut pas comparer les valeurs absolus des nombres.
25+
* Attention ! Il ne faut pas prendre pour 1er maximum 0, car si notre liste est composée uniquement de nombres $< 0$, on ne va pas avoir un maximum correct.
26+
* Pour la même raison, il ne faut pas comparer les valeurs absolues des nombres.
2727
* Ensuite on compare les nombres. Si le 2ème est plus grand que le maximum, il devient le maximum et ainsi de suite, jusqu'à arriver à la fin de la liste.
2828

2929
## Exemple
@@ -32,4 +32,4 @@ Dans notre exemple, on va prendre la liste $-48,0,8,22,0,31,-38,-15,43,14,22,21,
3232

3333
### Exemple en vidéo
3434

35-
![Trouver Maximum](../Exemples/.gif/FindMax.gif)
35+
* [Maximum](../Exemples/math/FindMax.mp4)

fr/math/Trouver_Minimum.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
### Principe
66

7-
* L'algorithme est directe: on parcours toute la liste de nombre et on retiens le plus petit nombre rencontré jusqu'à ce point.
7+
* L'algorithme est direct : on parcourt toute la liste de nombre et on retient le plus petit nombre rencontré jusqu'à ce point.
88

99
### Complexités
1010

@@ -17,13 +17,13 @@
1717

1818
### Auteurs
1919

20-
* Au vue de la très grande utilité et de la simplicité de cette algorithme, de nombreuses personnes l'ont très certainement mis au point en même temps.
20+
* À là vue de la très grande utilité et de la simplicité de cet algorithme, de nombreuses personnes l'ont très certainement mis au point en même temps.
2121

2222
## Étapes
2323

2424
* La première étape est d'initialiser le minimum. Pour cela, on dit qu'il est égale au 1er terme de la liste.
25-
* Attention! Il ne faut pas prendre pour 1er minimum 0 car si notre liste est composée uniquement de nombres $> 0$, on ne vas pas avoir un minimum correct.
26-
* Pour la même raison, il ne faut pas comparer les valeurs absolus des nombres.
25+
* Attention ! Il ne faut pas prendre pour 1er minimum 0, car si notre liste est composée uniquement de nombres $> 0$, on ne va pas avoir un minimum correct.
26+
* Pour la même raison, il ne faut pas comparer les valeurs absolues des nombres.
2727
* Ensuite on compare les nombres. Si le 2ème est plus grand que le minimum, il devient le minimum et ainsi de suite, jusqu'à arriver à la fin de la liste.
2828

2929
## Exemple
@@ -32,4 +32,4 @@ Dans notre exemple, on va prendre la liste $16,6,2,-14,43,-28,-35,20,-23,25,9,38
3232

3333
### Exemple en vidéo
3434

35-
![Trouver Minimum](../Exemples/.gif/FindMin.gif)
35+
* [Minimum](../Exemples/math/FindMin.mp4)

fr/tri/Tri_par_insertion.md

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Tri par insertion
2+
3+
## Description
4+
5+
### Principe
6+
7+
Le principe du tri par insertion est de parcourir la liste de valeurs, en les classant par rapport aux valeurs déjà parcourues.
8+
On trie la 2ème valeur par rapport à la 1ère, la 3ème par rapport à la 2ème et la 1ème, etc.
9+
Ainsi, lorsque l'on compare la n-ième valeur, toutes les valeurs précédentes sont triées.
10+
11+
### Complexités
12+
13+
Lors de l'évaluation des complexités d'un algorithme de tri, il est nécessaire de prendre en compte non seulement le cas général, mais également le meilleur et le pire cas.
14+
Dans un algorithme de tri, le meilleur cas est celui où la liste est déjà triée, le pire est généralement le cas où la liste est triée "à l'envers" (décroissant si on cherche l'ordre croissant et inversement), le cas général correspond à une liste d'éléments dans le désordre.
15+
16+
* La complexité spatiale d'un tri par insertion est simple et est constante à travers les cas. Il s'agit de la liste des valeurs, car le tri est effectué directement dans la liste, plus une variable qui servira à retenir la valeur que l'on est en train de trier.
17+
* La complexité temporelle varie beaucoup selon les cas :
18+
* Dans le pire des cas, la complexité est en $n^2/2$.
19+
* Dans le meilleur cas, la complexité est seulement de $n$.
20+
* Finalement, dans le cas général, la complexité est de $n^2/4$.
21+
* Cet algorithme de tri a pour seuls avantages la très grande facilité d'implémentation, le peu de place mémoire prise et sa rapidité sur les très petites listes ou les listes "presque triées".
22+
* On préféra utiliser d'autres algorithmes de tri comme le tri par fusion ou le tri rapide dans la grande majorité des cas (cf. leurs explications respectives).
23+
24+
## Étapes
25+
26+
* On commence par comparer la 2ème valeur à la 1ère, et on la place accordement.
27+
* On compare la 3ème valeur avec la 2ème.
28+
* Soit la 3ème valeur est plus grande, auquel cas on passe à la 4eme.
29+
* Où alors, elle est plus petite, auquel cas on copie la 2ème valeur à la place de la 3ème, et on compare avec la 1ère.
30+
* De là, soit la 1ère est plus petite, et on passe à la 4ème valeur.
31+
* Soit, la 1ère est plus grande, et on copie la 1ère à la place de la 2ème, puis on place la valeur que l'on trie à la place de la 1ère.
32+
* On continue comme cela jusqu'à atteindre la fin de la liste.
33+
(Je vous conseille de regarder la vidéo pour que le principe soit plus clair.)
34+
35+
## Exemple
36+
37+
Dans notre exemple, on va trier la liste $84, 33, 82, 53, 50, 66, 10, 92, 96, 77, 29$
38+
39+
### Exemple en vidéo
40+
41+
Tri par insertion dans le :
42+
43+
* [cas général](../Exemples/tri/TriInsertionGeneral.mp4)
44+
* [meilleur cas](../Exemples/tri/TriInsertionMeilleur.mp4)
45+
* [pire cas](../Exemples/tri/TriInsertionPire.mp4)
46+
47+
## Implémentation
48+
49+
* [Python](https://github.com/TheAlgorithms/Python/blob/master/sorts/insertion_sort.py)
50+
51+
## Pour aller plus loin
52+
53+
* Dans le meilleur cas, nous n'effectuons qu'une unique comparaison. En effet, le terme comparé et plus grand que le terme juste avant, donc aucune modification n'est à effectuer. (ce qui correspond bien à $n$ opérations)
54+
* Dans le pire des cas, on doit au contraire "redescendre" tous les termes un par un. On effectue une opération pour remonter le 2ème terme, deux pour le 3ème, etc. On effectue au total un nombre d'opérations de l'ordre de $\Theta(n^2)$.
55+
* Bien que le cas moyen soit également un $\Theta(n^2)$, le pire cas effectue plus précisément $\Theta(n^2/2)$ opérations, tandis que le cas moyen en effectue $\Theta(n^2/4)$

0 commit comments

Comments
 (0)