1. II. Le tri à bulles
Hadidene Oussema
Def Proc Tri_a_bulles (var T : tab ; n : entier )
répéter 23 13 23 23
23 13 23 13
2
5
8
2
8
5
5
8
5
tr vrai
Pour i de 1 à n-1 faire
Si (t[i]>t[i+1]) alors trié
Tableau
proc permut(t[i],t[i+1])
tr faux
Fin si
Fin pour
jusqu’à (tr)
Fin Tri_a_bulles
1
2. III. Le tri par sélection
Hadidene Oussema
Def Proc Tri_selection (var T : tab ; n : entier )
5
Pour 23 1 à n-1 13
i de 2
faire 8
P Fn pos_min(t,i,n)
Si (P≠i) alors
Tableau trié
proc permut(t[i],t[P])
Fin si
Fin pour
Fin Tri_selection
2
3. IV. Le tri par insertion
Hadidene Oussema
Def Proc Tri_insertion (var T : tab ; n : entier )
Pour i de 2 à n faire
Si (T[i-1] > T[i]) alors 8
23
2
13
5
E T[i]
Pi
Tableau trié
tant que (T[P-1] > e) et (P > 1) faire
T[P] t[p-1]
P P-1
Fin tant que
T[P] E
Fin si
Fin pour
Fin Tri_insertion
3
4. V. Le tri par Shell
Hadidene Oussema
-5 30 0 -2 42 22 9 -4 10 15 40 -9 12 28 14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ème Sous du pas avec
Déterminationvecteur maximal
21er Sous vecteur avec
P = 13
4
5. V. Le tri par Shell
Hadidene Oussema
-5 14 0 -2 42 22 9 -4 10 15 40 -9 12 28 30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Diminution du pas
P = 4 (13 Div 3)
5
6. V. Le tri par Shell
Hadidene Oussema
-5 14 0 -2 10 22 9 -4 12 15 40 -9 42 28 30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Le 2ème sous tableau avec
P=4
6
7. V. Le tri par Shell
Hadidene Oussema
-5 14 0 -2 10 15 9 -4 12 22 40 -9 42 28 30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Le 3ème sous tableau avec
P=4
7
8. V. Le tri par Shell
Hadidene Oussema
-9 -5 0
-5 14 -4 -2 10 15 10 12 12 22 30 28 42 28 40
0 9 9 -4 14 15 22 -9 30 40 42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Diminution du pas
P = 1 (4 Div 3)
Nous appliquons le tri par insertion
Plus le tableau est grand, plus le tri est efficace !!!
8
9. Def Proc Tri_Shell (var T : tab ; n : entier )
Hadidene Oussema
p0
Tant que (p<n) faire
Clause 0
p (3 * p) + 1
Fin tant que
Tant que (p ≠ 1) faire
p p div 3
Pour i de p+1 à n faire
e T[i]
ji
Tant que (j>p) et (T[j-p]>e) faire
Clause 1
Clause 2
T[j] T[j-p]
Clause 3
j j-P
Fin tant que
T[j] e
Fin pour
Fin tant que
Fin Tri_Shell
9
V. Le tri par Shell
10. V. Le tri par Shell
Hadidene oussema
6
n = 10
p=0
3
0
9
1
7
8
2
5
4
1
2
3
4
5
6
7
8
9
10
Tant que (p<n) faire
p (3 * p) + 1
Fin tant que
Clause 0
it1 : (0<10) | p = 1
it2 : (1<10) | p = 4
it3 : (4<10) | p = 13
it4 : (13<10) arrêt
10
11. V. Le tri par Shell
Hadidene Oussema
6
n = 10
p = 13
3
0
9
1
7
8
2
5
4
1
2
3
4
5
6
7
8
9
10
Tant que (p ≠ 1) faire
p p div 3
Pour i de p+1 à n faire
e T[i]
ji
Tant que (j>p) et (T[j-p]>e)
faire
Clause 2
Clause 3
T[j] T[j-p]
j j-P
Fin tant que
T[j] e
Fin pour
Fin tant que
Clause 1
11
12. V. Le tri par Shell
Hadidene Oussema
6
n = 10
p = 13
3
0
9
1
7
8
2
5
4
1
2
3
4
5
6
7
8
9
10
C1_it1 : (13≠1) : p = 4 C2_it1 : i=5|e=1|j=5 C3_it1 : (5>4)&(6>1)| j=1
C3_it2 :
(1>4)A
C2_it2 : i=6|e=7|j=6 C3_it1 :
C2_it3 : i=7|e=8|j=7 C3_it1 :
C2_it4 : i=8|e=2|j=8 C3_it1 :
C3_it2 :
C2_it5 : i=9|e=5|j=9 C3_it1 :
C3_it2 :
C2_it6 : i=10|e=4|j=10 C3_it1 :
C3_it2 :
(6>4)&(3>7) A
(7>4)&(0>8) A
(8>4)&(9>2) |j=4
(4>4) A
(9>4)&(6>5) |j=5
(5>4)&(1>5) A
(10>4)&(7>4) |j=6
(6>4)&(3>4) A
12