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
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
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]
Pi
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
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
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
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
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
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
Def Proc Tri_Shell (var T : tab ; n : entier )
Hadidene Oussema
p0
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]
ji
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
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
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]
ji
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
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
V. Le tri par Shell

Hadidene oussema

0
1

1
3

2
0

3
2

4
5

5
4

6
8

7
9

8
6

9
7

1

2

3

4

5

6

7

8

9

10

C1_it2 : (4≠1) :

p = 1 C2_it1 : i=2|e=3|j=2 C3_it1 : (2>1)&(1>3)  A
C2_it2 : i=3|e=0|j=3 C3_it1 : (3>1)&(3>0) | j=2
C3_it2 : (2>1)&(1>0) | j=1
C3_it3 :
(1>1)  A

C2_it10 :

C1_it2:(1≠1)A

13
VI. Le tri par Fusion

Hadidene oussema

0

1

3

6

9

2

4

5

7

8

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

14
VI. Le tri par Fusion

Hadidene oussema

0

1

3

6

9

2

4

5

7

8

1

2

3

4

5

6

7

8

9

10

0

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

10

15

Animations tris

  • 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 tripar 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 tripar 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] Pi 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 tripar 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 tripar 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 tripar 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 tripar 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 tripar 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 p0 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] ji 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 tripar 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 tripar 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] ji 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 tripar 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
  • 13.
    V. Le tripar Shell Hadidene oussema 0 1 1 3 2 0 3 2 4 5 5 4 6 8 7 9 8 6 9 7 1 2 3 4 5 6 7 8 9 10 C1_it2 : (4≠1) : p = 1 C2_it1 : i=2|e=3|j=2 C3_it1 : (2>1)&(1>3)  A C2_it2 : i=3|e=0|j=3 C3_it1 : (3>1)&(3>0) | j=2 C3_it2 : (2>1)&(1>0) | j=1 C3_it3 : (1>1)  A C2_it10 : C1_it2:(1≠1)A 13
  • 14.
    VI. Le tripar Fusion Hadidene oussema 0 1 3 6 9 2 4 5 7 8 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 14
  • 15.
    VI. Le tripar Fusion Hadidene oussema 0 1 3 6 9 2 4 5 7 8 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 15