|
| 1 | +# Tri à bulles |
| 2 | + |
| 3 | +## Description |
| 4 | + |
| 5 | +### Principe |
| 6 | + |
| 7 | +Le principe du tri à bulles est de comparer répétitivement les éléments consécutifs d'un tableau deux à deux, et de les permuter lorsque ces derniers sont mal trié. |
| 8 | + |
| 9 | +### Complexités |
| 10 | + |
| 11 | +#### Complexités temporelle |
| 12 | + |
| 13 | +- Dans le pire des cas, lorsque le plus petit élément est à la fin du tableau, la complexité est de `O(n^2)` |
| 14 | +- Dans le meilleur cas, lorsque le tableau est déjà trié, la complexité est de `O(n)` (on n'effectue qu’une seule itération de l'algorithme) |
| 15 | +- En moyenne, la complexité est de `O(n^2)` |
| 16 | + |
| 17 | + |
| 18 | +## Étapes |
| 19 | + |
| 20 | +- Sélectionner le premier élément du tableau |
| 21 | +- Le comparer avec l'élément suivant |
| 22 | + - Si la valeur du premier élément est plus grande que celle du deuxième, permuter ces derniers. |
| 23 | + - Sinon, ne rien faire |
| 24 | +- Continuez à faire cela pour chaque index du tableau. |
| 25 | +- Répétez les étapes précédentes n fois. |
| 26 | + |
| 27 | +## Exemple |
| 28 | + |
| 29 | +```txt |
| 30 | +tab[] = {10, 80, 40, 30} |
| 31 | +Indexes: 0 1 2 3 |
| 32 | +
|
| 33 | +1. Index = 0, Valeur = 10 |
| 34 | +2. 10 < 80, ne rien faire et continuer |
| 35 | +
|
| 36 | +3. Index = 1, Valeur = 80 |
| 37 | +4. 80 > 40, permuter 80 et 40 |
| 38 | +5. Les nouvelles valeurs du tableau sont : {10, 40, 80, 30} |
| 39 | +
|
| 40 | +6. Index = 2, Valeur = 80 |
| 41 | +7. 80 > 30, permuter 80 et 30 |
| 42 | +8. Les nouvelles valeurs du tableau sont : {10, 40, 30, 80} |
| 43 | +
|
| 44 | +Répétez les étapes précédentes |
| 45 | +
|
| 46 | +tab[] = {10, 40, 30, 80} |
| 47 | +Indexes: 0 1 2 3 |
| 48 | +
|
| 49 | +1. Index = 0, Valeur = 10 |
| 50 | +2. 10 < 40, ne rien faire et continuer |
| 51 | +
|
| 52 | +3. Index = 1, Valeur = 40 |
| 53 | +4. 40 > 30, permuter 40 et 30 |
| 54 | +5. Les nouvelles valeurs du tableau sont : {10, 30, 40, 80} |
| 55 | +
|
| 56 | +6. Index = 2, Valeur = 40 |
| 57 | +7. 40 < 80, ne rien faire |
| 58 | +8. Les nouvelles valeurs du tableau sont : {10, 30, 40, 80} |
| 59 | +
|
| 60 | +Répétez les étapes précédentes |
| 61 | +
|
| 62 | +tab[] = {10, 30, 40, 80} |
| 63 | +Indexes: 0 1 2 3 |
| 64 | +
|
| 65 | +1. Index = 0, Valeur = 10 |
| 66 | +2. 10 < 30, ne rien faire et continuer |
| 67 | +
|
| 68 | +3. Index = 1, Valeur = 30 |
| 69 | +4. 30 < 40, ne rien faire et continuer |
| 70 | +
|
| 71 | +5. Index = 2, Valeur = 40 |
| 72 | +6. 40 < 80, ne rien faire |
| 73 | +
|
| 74 | +Puisqu'il n'y a pas de permutations dans les étapes précédentes, cela signifie que le tableau est trié et que nous pouvons nous arrêter ici. |
| 75 | +``` |
| 76 | + |
| 77 | +## Implémentations |
| 78 | + |
| 79 | +- [Python](https://github.com/TheAlgorithms/Python/blob/master/sorts/bubble_sort.py) |
| 80 | +- [C](https://github.com/TheAlgorithms/C/blob/master/sorting/bubble_sort.c) |
| 81 | +- [C++](https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/sorting/bubble_sort.cpp) |
| 82 | +- [C-Sharp](https://github.com/TheAlgorithms/C-Sharp/blob/master/Algorithms/Sorters/Comparison/BubbleSorter.cs) |
| 83 | +- [Java](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/BubbleSort.java) |
| 84 | +- [Go](https://github.com/TheAlgorithms/Go/blob/master/sorts/bubblesort.go) |
| 85 | +- [Ruby](https://github.com/TheAlgorithms/Ruby/blob/master/sorting/bubble_sort.rb) |
| 86 | +- [Scala](https://github.com/TheAlgorithms/Scala/blob/master/src/main/scala/Sort/BubbleSort.scala) |
| 87 | +- [JavaScript](https://github.com/TheAlgorithms/Javascript/blob/master/Sorts/BubbleSort.js) |
0 commit comments