Académique Documents
Professionnel Documents
Culture Documents
1 Introduction
2 Algorithmes de tri
Tri par s´election
Tri par insertion
Tri fusion
Le tri rapide
Des tris avec des arbres...
Tri par tas
Optimalit´e des
algorithmes de tri Activit´e en
classe
1 Introduction
2 Algorithmes de tri
Tri par s´election
Tri par insertion
Tri fusion
Le tri rapide
Des tris avec des arbres...
Tri par tas
Optimalit´e des
algorithmes de tri Activit´e en
classe
• Probl`eme connu
• Grande richesse conceptuelle :
⋆ Des algorithmes bas´es sur des id´ees et des
structures de donn´ees tr`es diff´erentes...
⋆ Des complexit´es diff´erentes.
⋆ Des algorithmes optimaux.
Plan
1 Introduction
2 Algorithmes de tri
Tri par s´election
Tri par insertion
Tri fusion
Le tri rapide
Des tris avec des arbres...
Tri par tas
Optimalit´e des
algorithmes de tri Activit´e en
classe
1 Introduction
2 Algorithmes de tri
Tri par s´election
Tri par insertion
Tri fusion
Le tri rapide
Des tris avec des arbres...
Tri par tas
Optimalit´e des
algorithmes de tri Activit´e en
classe
1 Introduction
2 Algorithmes de tri
Tri par s´election
Tri par insertion
Tri fusion
Le tri rapide
Des tris avec des arbres...
Tri par tas
Optimalit´e des
algorithmes de tri Activit´e en
classe
Ins´erer(T , k)
si k > 1 alors
si T [k − 1] > T [k] alors
T [k] ↔ T [k − 1] Ins
´erer(T,k-1)
Le tri par insertion
Ins´erer(T , k)
si k > 1 alors
si T [k − 1] > T [k] alors
T [k] ↔ T [k − 1]
Ins´erer(T,k-1)
1 Introduction
2 Algorithmes de tri
Tri par s´election
Tri par insertion
Tri fusion
Le tri rapide
Des tris avec des arbres...
Tri par tas
Optimalit´e des
algorithmes de tri Activit´e en
classe
3,
Le tri fusion
3, 5,
Le tri fusion
3, 5, 7,
Le tri fusion
3, 5, 7, 10,
Le tri fusion
3, 5, 7, 10, 12,
Le tri fusion
3, 5, 7, 10, 12, 13, 15, 16, 19, 20, 25, 35, 38,
Le tri fusion
3, 5, 7, 10, 12, 13, 15, 16, 19, 20, 25, 35, 38, 40
Tri fusion
1 Introduction
2 Algorithmes de tri
Tri par s´election
Tri par insertion
Tri fusion
Le tri rapide
Des tris avec des arbres...
Tri par tas
Optimalit´e des
algorithmes de tri Activit´e en
classe
(plus de fusion!)
Le tri rapide
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25, 38
Le tri rapide
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25, 38
15, 10, 19, 13, 5, 3, 12, 7, 16, 20, 35, 40, 25, 38
`a trier! `a trier!
Complexit´e du tri rapide
1 Introduction
2 Algorithmes de tri
Tri par s´election
Tri par insertion
Tri fusion
Le tri rapide
Des tris avec des arbres...
Tri par tas
Optimalit´e des
algorithmes de tri Activit´e en
classe
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15
10
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15 35
10
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15 35
10 19
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15 35
10 19
13
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15 35
10 19
5 13
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15 35
10 19
5 13
3
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15 35
10 19
5 13
3 12
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15 35
10 19
5 13
3 7 12
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15 35
10 19
5 13 16
3 7 12
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15 35
10 19 40
5 13 16
3 7 12
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15 35
10 19 25 40
5 13 16
3 7 12
Un tri avec des arbres : exemple...
20, 15, 10, 35, 19, 13, 5, 3, 12, 7, 16, 40, 25,
38
20
15 35
10 19 25 40
5 13 16 38
3 7 12
Construire l’arbre
Parcours (noeud a)
begin
si ¬EstVide(a) alors
[premier passage] Parcours(G(a))
[second passage] Parcours(D(a))
[troisi`eme passage]
end
Et ensuite...
Il reste `a parcourir l’arbre construit et `a afficher la valeur d’un
noeud lorsqu’on le visite pour la deuxi`eme fois (parcours
infixe)...
Parcours (noeud a)
begin
si ¬EstVide(a) alors
[premier passage] Parcours(G(a))
[second passage] Afficher valeur(a)
Parcours(D(a))
[troisi`eme passage]
end
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
3
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
35
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
357
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
3 5 7 10
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
3 5 7 10 12
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
3 5 7 10 12 13
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
3 5 7 10 12 13 15
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
3 5 7 10 12 13 15 16
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
3 5 7 10 12 13 15 16 19
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
3 5 7 10 12 13 15 16 19 20
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
3 5 7 10 12 13 15 16 19 20 25
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
3 5 7 10 12 13 15 16 19 20 25 35
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
3 5 7 10 12 13 15 16 19 20 25 35 38
Exemple...
20
15 35
10 19 25 40
5 13 16 38
3 7 12
3 5 7 10 12 13 15 16 19 20 25 35 38 40
Complexit´e du tri par ABR
1 Introduction
2 Algorithmes de tri
Tri par s´election
Tri par insertion
Tri fusion
Le tri rapide
Des tris avec des arbres...
Tri par tas
Optimalit´e des
algorithmes de tri Activit´e en
classe
4 10
8 7 10 14
16 14 9
Repr´esentation des tas
Ajouter(T , n, x )
n←n+1
i←n
tant que i /2 > 0 && T [i /2] > x faire
T [i ] ← T [i /2]
i ← i /2
T [i ] ← x
Op´erations sur les tas : extraire-min
1 retourner T [1], T [1] ← T [n], n ← n − 1,
2 puis appeler Tasser(T , n, 1)
Tasser(T , n, i )
g←2·i,
d←2·i+1
min ← i
si g ≤ n && T [g ] < T [i ] alors min ← g
si d ≤ n && T [d ] < T [min] alors min ← d
si min = i alors
T [i ] ↔ T [min]
Tasser(T , n, min)
Les ABR et les tas (ou Files de priorit´e) servent `a stocker des
´el´ements en fonction d’une cl´e.
Pour les ABR, les op´erations suivantes sont facilement impl
´ementables :
• Ajouter, Supprimer et Rechercher un ´el´ement,
• Parcourir dans l’ordre.
Leur complexit´e sont en O(h).
Pour les tas, on peut faire :
• Ajouter un ´el´ement,
• Extraire le plus petit ´el´ement.
Leur complexit´e sont en O(log(n)).
Plan
1 Introduction
2 Algorithmes de tri
Tri par s´election
Tri par insertion
Tri fusion
Le tri rapide
Des tris avec des arbres...
Tri par tas
Optimalit´e des
algorithmes de tri Activit´e en
classe
1, 2, 3 a1 < a3 2, 1, 3 a2 < a3
1, 3, 2 3, 1, 2 2, 3, 1 3, 2, 1
1 Introduction
2 Algorithmes de tri
Tri par s´election
Tri par insertion
Tri fusion
Le tri rapide
Des tris avec des arbres...
Tri par tas
Optimalit´e des
algorithmes de tri Activit´e en
classe
1 Introduction
2 Algorithmes de tri
Tri par s´election
Tri par insertion
Tri fusion
Le tri rapide
Des tris avec des arbres...
Tri par tas
Optimalit´e des
algorithmes de tri Activit´e en
classe
Programmes en Python...
(Pourquoi Python?)
Tri par s´election
d e f I n d i c e M i n ( T, i ) :
res = i
for k in range(len(T))[i+1:] :
if T [ k ] < T[res] : res = k
return res
d e f Tr i S e l e c t i o n ( T ) :
for i in range(len(T)-1) :
ind = IndiceM in(T,i)
T[i], T[ind] = T[ind], T[i]
return T
Tri par insertion
d e f I n s e r e r ( T, i ) :
if i > 0 :
if T[i-1] > T[i] :
T[i-1], T[i] =
T [ i ] , T [ i - 1 ] I n s e r e r ( T, i - 1 )
d e f Tr i I n s e r t i o n ( T ) :
for i in range(len(T))[1:] :
v = T[i]
I n s e r e r ( T, i )
return T
Tri par fusion
d e f Tr i F u s i o n ( T ) :
if l e n ( T ) > 1 :
if len( T) = = 2 :
if T [ 0 ] > T [ 1 ] : T [ 0 ] , T [ 1 ] = T [ 1 ] , T [ 0 ]
else :
m = len(T)/2
T = Fusion(TriFusion(T[:m]),TriFusion(T[m:]))
return T
La fusion de deux tableaux tri´es
d ef F u s i o n ( L 1 , L 2 ) :
res = [ ]
i1 = i2 = 0
while i1<len(L1) and i2 < len(L2) :
if L1 [ i1 ] < L2 [i2 ] :
res.append (L1[i1])
i1 = i 1 + 1
e l s e : res.append (L2[i2])
i2 = i 2 + 1
if i 1 = = l e n ( L 1 ) :
re s + = L 2 [ i 2 : ]
else :
re s + = L 1 [ i 1 : ]
return res
Tri rapide
def quicksort(T,bg = 0 , b d = N o n e ) :
if b d== N on e : bd=len(T)-1
if b g < b d :
i nd p =
indicepivot(T,bg,bd)
quic ks ort(T,bg,indp-1)
quicksort(T,indp+1,bd)
Pivotage
d e f i n d i c e p i v o t ( T, b g , b d ) :
p = T[bg]
l=bg+1
r=bd
while (l<=r) :
w h i l e ( l < = b d ) a n d (T[l ] <= p) :
l += 1
whi le (T[r] > p) :
r -= 1
if (l < r) :
T[r], T[l] =
T[l], T[r]
l , r = l+1, r-1
T[r], T[ b g ] = p, T[r]
return r