Skip to content
Snippets Groups Projects
Verified Commit 2f28ecbc authored by orestis.malaspin's avatar orestis.malaspin
Browse files

ajout exercices tri à bulles et complexité quicksort

parent f1e4277f
Branches
No related tags found
No related merge requests found
...@@ -118,7 +118,7 @@ Compris? ...@@ -118,7 +118,7 @@ Compris?
Non c'est normal, faisons un exemple. Non c'est normal, faisons un exemple.
# Tri rapide ou quicksort (4/8) # Tri rapide ou quicksort (3/8)
Deux variables sont primordiales: Deux variables sont primordiales:
...@@ -128,7 +128,7 @@ int low, high; // les indices min/max des tableaux à trier ...@@ -128,7 +128,7 @@ int low, high; // les indices min/max des tableaux à trier
![Un exemple de quicksort.](figs/quicksort.svg) ![Un exemple de quicksort.](figs/quicksort.svg)
# Tri rapide ou quicksort (5/8) # Tri rapide ou quicksort (4/8)
Deux variables sont primordiales: Deux variables sont primordiales:
...@@ -150,7 +150,7 @@ void quicksort(array, low, high) { ...@@ -150,7 +150,7 @@ void quicksort(array, low, high) {
} }
``` ```
# Tri rapide ou quicksort (6/8) # Tri rapide ou quicksort (5/8)
## Pseudocode: partition ## Pseudocode: partition
...@@ -172,7 +172,7 @@ int partition(array, low, high) { ...@@ -172,7 +172,7 @@ int partition(array, low, high) {
} }
``` ```
# Tri rapide ou quicksort (7/8) # Tri rapide ou quicksort (6/8)
## Exercice: implémenter les fonctions `quicksort` et `partition` ## Exercice: implémenter les fonctions `quicksort` et `partition`
...@@ -193,7 +193,7 @@ void quicksort(int size, int array[size], int first, ...@@ -193,7 +193,7 @@ void quicksort(int size, int array[size], int first,
``` ```
# Tri rapide ou quicksort (8/8) # Tri rapide ou quicksort (7/8)
\footnotesize \footnotesize
...@@ -219,6 +219,46 @@ int partition(int size, int array[size], int first, int last) { ...@@ -219,6 +219,46 @@ int partition(int size, int array[size], int first, int last) {
} }
``` ```
# Tri rapide ou quicksort (8/8)
## Quelle est la complexité du tri rapide?
. . .
* Pire des cas plus: $\mathcal{O}(N^2)$
* Quand le pivot sépare toujours le tableau de façon déséquilibrée ($N-1$
éléments d'un côté $1$ de l'autre).
* $N$ boucles et $N$ comparaisons $\Rightarrow N^2$.
* Meilleur des cas (toujours le meilleur pivot): $\mathcal{O}(N\cdot \log_2(N))$.
* Chaque fois le tableau est séparé en $2$ parties égales.
* On a $\log_2(N)$ partitions, et $N$ boucles $\Rightarrow N\cdot
\log_2(N)$.
* En moyenne: $\mathcal{O}(N\cdot \log_2(N))$.
# L'algorithme à la main
## Exercice *sur papier*
* Trier par tri rapide le tableau `[5, -2, 1, 3, 10]`
```C
```
# Tri à bulle (1/4) # Tri à bulle (1/4)
## Algorithme ## Algorithme
...@@ -266,7 +306,7 @@ void bubble_sort(int size, int array[]) { ...@@ -266,7 +306,7 @@ void bubble_sort(int size, int array[]) {
} }
``` ```
# Tri à bulle (3/4) # Tri à bulle (4/4)
## Quelle est la complexité du tri à bulles? ## Quelle est la complexité du tri à bulles?
...@@ -281,6 +321,28 @@ $$ ...@@ -281,6 +321,28 @@ $$
$$ $$
* En moyenne, $\mathcal{O}(N^2)$ ($N^2/2$ comparaisons). * En moyenne, $\mathcal{O}(N^2)$ ($N^2/2$ comparaisons).
# L'algorithme à la main
## Exercice *sur papier*
* Trier par tri à bulles le tableau `[5, -2, 1, 3, 10]`
```C
```
# L'algorithme du PPCM *récursif* (1/3) # L'algorithme du PPCM *récursif* (1/3)
## Exemple d'algorithme pour le calcul ## Exemple d'algorithme pour le calcul
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment