Méthodologie de la programmation
–E2I.1-
Les algorithmes de tri
C ill CHAVET
C
yr
ill
e
CHAVET
Vue d
'
ensemble
Vue
densemble
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
2
Plan
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Plan
Introduction aux algorithmes de tri
¾
Gé é lité
¾
n
é
ra
lité
s
¾Vérifier la correction
¾Notions de complexité
Les tris séquentiels
Les tris récursifs
Les
tris
récursifs
3
Objectifs
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Généralités
Vérifier la correction
Notions de complexité
Objectifs
Tri:
¾Ordonner un
ensemble d’éléments
selon un ensemble de
clés
sur lesquelles
est définie une
relation d’ordre
Algorithmes fondamentaux en informatique:
¾Base de données, ordonnancement...
Illustration de concepts vus précédemment:
¾Boucles, Récursivité
Introduction de concepts clefs en informatique:
Clié
¾
C
omp
l
ex
i
t
é
¾Stratégie «Diviser pour régner»
4
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Généralités
Vérifier la correction
Notions de complexité
Les algorithmes de tri utilisent une procédure permettant
d’échanger (de permuter) deux variables.
Procédure Echanger (a,b : Entier)
Déclaration Temp : Entie
r
Début
Temp a
a b
b Temp
Fin
5
Concept d
invariant de boucle
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Généralités
Vérifier la correction
Notions de complexité
Concept
dinvariant
de
boucle
Prouver la validité d’un algorithme
Définition:
¾Un invariant de boucle est une propriété qui reste vraie à
chaque passage dans la boucle (en un point précis)
Il faut donc:
¾Définir un invariant qui assure qu’à la fin la propriété voulue
est satisfaite
¾S’assurer qu’il est vrai avant d’entrer dans la boucle
éé è é
¾V
é
rifier par r
é
currence qu’il reste vrai apr
è
s chaque ex
é
cution
de la boucle
6
Exemple d
invariant de boucle
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Généralités
Vérifier la correction
Notions de complexité
Exemple
dinvariant
de
boucle
Produit des chiffres d
un nombre
Produit
des
chiffres
dun
nombre
Fonction ProduitsChiffres(n : Entier) : Entier
Déclaration x : Entier
Début
Début
x 1
Répéter
x
x*(n mod 10)
x
x*(n
mod
10)
n n / 10
Jusqu’à (n < 1)
Fi
Exemple:
ProduitChiffres(1234) = 1*2*3*4
=24
Fi
n
=
24
7
Exemple d
invariant de boucle
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Généralités
Vérifier la correction
Notions de complexité
Exemple
dinvariant
de
boucle
Produit des chiffres d
un nombre
Produit
des
chiffres
dun
nombre
Fonction ProduitsChiffres(n : Entier) : Entier
Déclaration x : Entier
Début
Précondition: n>0, x=1
Début
x 1
Répéter
x
x*(n mod 10)
x
x*(n
mod
10)
n n / 10
Jusqu’à (n < 1)
Fi
Fi
n
8
Exemple d
invariant de boucle
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Généralités
Vérifier la correction
Notions de complexité
Exemple
dinvariant
de
boucle
Produit des chiffres d
un nombre
Produit
des
chiffres
dun
nombre
Fonction ProduitsChiffres(n : Entier) : Entier
Déclaration x : Entier
Début
Précondition: n>0, x=1
Début
x 1
Répéter
x
x*(n mod 10)
Invarian
t
:
-n
i= n/10i
-x
i= produit des chiffres de (n-10i*ni)
x
x*(n
mod
10)
n n / 10
Jusqu’à (n < 1)
Fi
Fi
n
9
Exemple d
invariant de boucle
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Généralités
Vérifier la correction
Notions de complexité
Exemple
dinvariant
de
boucle
Produit des chiffres d
un nombre
Produit
des
chiffres
dun
nombre
Fonction ProduitsChiffres(n : Entier) : Entier
Déclaration x : Entier
Début
Précondition: n>0, x=1
Début
x 1
Répéter
x
x*(n mod 10)
Invarian
t
:
-n
i= n/10i
-x
i= produit des chiffres de (n-10i*ni)
x
x*(n
mod
10)
n n / 10
Jusqu’à (n < 1)
Fi
Terminaison:
i>log
(n) n
=0
Fi
n
i
>
log
10
(n)
,
n
i
=
0
Correction:
xi= produit des chiffres de (n)
10
Exemple d
invariant de boucle
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Généralités
Vérifier la correction
Notions de complexité
Exemple
dinvariant
de
boucle
Produit des chiffres d
un nombre
Produit
des
chiffres
dun
nombre
Fonction ProduitsChiffres(n : Entier) : Entier
Déclaration x : Entier
Début
Précondition: n>0, x=1
Début
x 1
Répéter
x
x*(n mod 10)
Invarian
t
:
-n
i= n/10i
-x
i= produit des chiffres de (n-10i*ni)
x
x*(n
mod
10)
n n / 10
Jusqu’à (n < 1)
Fi
Terminaison:
i>log
(n) n
=0
Fi
n
i
>
log
10
(n)
,
n
i
=
0
Correction:
xi= produit des chiffres de (n)
11
Evaluer la complexité d
un algorithme
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Généralités
Vérifier la correction
Notions de complexité
Evaluer
la
complexité
dun
algorithme
Idée:
¾Compter le nombre de permutations, le nombre de tours dans une boucle…
Fonction Exemple(n : Entier) : Entier
Déclaration i, j : Entier
Déb t
Déb
u
t
pour i de 0 à n-1
j
d
1
pour
j
d
e
0
à
n-
1
fin pour
fin pour
fin
pour
Fin
12
Evaluer la complexité d
un algorithme
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Généralités
Vérifier la correction
Notions de complexité
Evaluer
la
complexité
dun
algorithme
Idée:
¾Compter le nombre de permutations, le nombre de tours dans les boucles…
Fonction Exemple(n : Entier) : Entier
Déclaration i, j : Entier
Déb t
Déb
u
t
pour i de 0 à n-1
jd 0à
1
pour
j
d
e
0
à
n-
1
fin pour
fin pour
n tours n tours
fin
pour
Fin Soient n*n = n2tours,
La complexité de cet algorithme peut
s
exprimer en O(n
2
)
13
s exprimer
en
O(n
)
Evaluer la complexité d
un algorithme
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Généralités
Vérifier la correction
Notions de complexité
Evaluer
la
complexité
dun
algorithme
Idée:
¾Compter le nombre de permutations, le nombre de tours dans une boucle…
Définition:
¾Déterminer une fonction
f
:
+
q
ui
,
q,
à un paramètre
n
dépendant de la donnée soumise à l'algorithme (
n
est la
taille de cette donnée, e.g. la taille du tableau a trier),
associe le coût
f
(
n
)(exprimé en unités arbitraires de temps ou d'espace)
de l
'
exécution de algorithme pour la donnée
de
lexécution
de
algorithme
pour
la
donnée
14
Plan
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Plan
Introduction aux algorithmes de tri
Les tris séquentiels
¾Tri à bulles
¾Tri par sélection
¾Tri par insertion
Les tris récursifs
Les
tris
récursifs
15
Tri par sélection
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Tri a bulles
Tri par sélection
Tri par insertion
Algorithme de Tri à bulles
Tri
par
sélection
Idée de M De Lapalisse :
Algorithme
de
Tri
à
bulles
Idée
de
M
.
De
Lapalisse
:
¾Un tableau trié en ordre croissant, c’est un tableau dans lequel tout
élément est plus petit que celui qui le suit
Principe de la méthode :
¾Sélectionner le minimum du tableau en parcourant le tableau de la
fin au début
,
et en échan
g
eant tout cou
p
le d'éléments consécutifs
,g p
non ordonnés
Cet algorithme sera vu en TD …
16
Tri par sélection
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Tri a bulles
Tri par sélection
Tri par insertion
Algorithme de Tri par sélection
Tri
par
sélection
Idée:
Algorithme
de
Tri
par
sélection
Idée:
¾A partir du 1er élément, on recherche le plus petit éléments dans le reste du
tableau et on place ce dernier dans la première case. On poursuit ensuite
avec le 2ième élément…
17
Tri par sélection
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Tri a bulles
Tri par sélection
Tri par insertion
Algorithme de Tri par sélection
Tri
par
sélection
Idée:
Algorithme
de
Tri
par
sélection
Idée:
¾A partir du 1er élément, on recherche le plus petit éléments dans le reste du
tableau et on place ce dernier dans la première case. On poursuit ensuite
avec le 2ième élément…
pour
i
de
1àN
1:
pour
i
de
1
à
N
-
1:
min = i
pour j de i+1 à N:
si
T
j
<T
i
alors
min
=
j
1N
si
T
j
<
T
m
i
n
alors
min
j
Echanger(Ti, Tmin)
18
Tri par sélection
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Déroulement de l
algorithme
Tri a bulles
Tri par sélection
Tri par insertion
Tri
par
sélection
Idée:
Déroulement
de
l algorithme
Idée:
¾A partir du 1er élément, on recherche le plus petit éléments dans le reste du
tableau et on place ce dernier dans la première case. On poursuit ensuite
avec le 2ième élément…
pour
i
de
1àN
-
1:
Min = 1
pour
i
de
1
à
N
1:
min = i
pour j de i+1 à N:
si T
j
< T
min
alors min = j
583460791102
j
min
Echanger(Ti, Tmin)
19
Tri par sélection
Introduction aux algorithmes de tri
Les tris séquentiels
Les tris récursifs
Déroulement de l
algorithme
Tri a bulles
Tri par sélection
Tri par insertion
Tri
par
sélection
Idée:
Déroulement
de
l algorithme
Idée:
¾A partir du 1er élément, on recherche le plus petit éléments dans le reste du
tableau et on place ce dernier dans la première case. On poursuit ensuite
avec le 2ième élément…
pour
i
de
1àN
-
1:
min min
pour
i
de
1
à
N
1:
min = i
pour j de i+1 à N:
si T
j
< T
min
alors min = j
583460791102
j
min
Echanger(Ti, Tmin)
20
1 / 14 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!