73
LES ALGORITHMES DE TRIS Lélia Blin Université d’Evry Chargée de cours: Lélia Blin Transparents:http://www-npa.lip6.fr/~blin/Enseignements.html Email: [email protected] 1

INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

LES ALGORITHMES DE TRIS

Lélia Blin Université d’Evry

Chargée de cours: Lélia Blin Transparents:http://www-npa.lip6.fr/~blin/Enseignements.html

Email: [email protected]

1

Page 2: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

IDÉE FONDAMENTALE

Une collection de valeurs de même type (rangées dans un tableau)

Un opérateur de comparaison (≤,≥, >, <, …)

But :

Ré-ordonner les valeurs de la façon suivante

T[i] ≤ T[i+1] ∀ i ∈[1 .. Taillemax]

Lélia Blin Université d’Evry2

Page 3: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

QUELQUES ALGORITHMES DE TRIS

Tris élémentaires

Tri par insertion

Tri par sélection

Tri par permutation

Tris avancés

Tri Fusion

Tri rapide

Borne Inférieure sur le tri par comparaison

Lélia Blin Université d’Evry3

Page 4: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR INSERTION

Tri interne, sur place et par comparaison

Principe :

A tout moment, le tableau à trier sera en 2 parties :

Une partie triée [1 .. TailleCourante]

Une partie non triée [TailleCourante+1 .. TailleMax]

Lélia Blin Université d’Evry

1 2 3 4 5 ... ... ... ... ... TailleMAX

Eléments triés Eléments non triés

Taille Courante

4

Page 5: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR INSERTION

Lélia Blin Université d’Evry

14 2 • Premiers pas

Sortie : permutation (réorganisation) ⟨a′1, a′2, . . . , a′n⟩ de la suite donnée en entrée,de façon que a′1 ! a′2 ! · · · ! a′n.

Les nombres à trier sont parfois appelés clés.

Dans cet ouvrage, nous exprimerons généralement les algorithmes sous la formede programmes écrits en un pseudo code qui, à certains égards, rappelle C, Pascalou Java. Si vous connaissez déjà l’un de ces langages, vous n’aurez guère de mal àlire nos algorithmes. Ce qui différencie le pseudo code du « vrai » code c’est que,avec le pseudo code nous employons l’écriture qui nous semble être la plus claireet la plus concise pour spécifier l’algorithme ; ne soyez donc pas surpris de voir ap-paraître un mélange de français et de « vrai » code. Autre différence entre pseudocode et vrai code : le pseudo code ne se soucie pas, en principe, de problèmes d’ingé-nierie logicielle tels qu’abstraction des données, modularité, traitement d’erreur, etc.Cela permet au pseudo code de refléter plus clairement la substantifique moelle del’algorithme.

Nous commencerons par le tri par insertion, qui est un algorithme efficace quand ils’agit de trier un petit nombre d’éléments. Le tri par insertion s’inspire de la manièredont la plupart des gens tiennent des cartes à jouer. Au début, la main gauche dujoueur est vide et ses cartes sont posées sur la table. Il prend alors sur la table lescartes, une par une, pour les placer dans sa main gauche. Pour savoir où placer unecarte dans son jeu, le joueur la compare avec chacune des cartes déjà présentes danssa main gauche, en examinant les cartes de la droite vers la gauche, comme le montrela figure 2.1. A tout moment, les cartes tenues par la main gauche sont triées ; cescartes étaient, à l’origine, les cartes situées au sommet de la pile sur la table.

2♣♣

♣ 2♣

4♣♣ ♣

♣♣ 4♣

5♣♣ ♣

♣♣ 5♣

7♣

♣♣ ♣

♣ ♣

♣♣7

10♣ ♣♣ ♣♣ ♣

♣♣♣♣♣

10♣

Figure 2.1 Tri de cartes à jouer, via tri par insertion.

Notre pseudo-code pour le tri par insertion se présente sous la forme d’une procé-dure appelée TRI-INSERTION. Elle prend comme paramètre un tableau A[1 . . n] qui

5

Page 6: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

14 2 • Premiers pas

Sortie : permutation (réorganisation) ⟨a′1, a′2, . . . , a′n⟩ de la suite donnée en entrée,de façon que a′1 ! a′2 ! · · · ! a′n.

Les nombres à trier sont parfois appelés clés.

Dans cet ouvrage, nous exprimerons généralement les algorithmes sous la formede programmes écrits en un pseudo code qui, à certains égards, rappelle C, Pascalou Java. Si vous connaissez déjà l’un de ces langages, vous n’aurez guère de mal àlire nos algorithmes. Ce qui différencie le pseudo code du « vrai » code c’est que,avec le pseudo code nous employons l’écriture qui nous semble être la plus claireet la plus concise pour spécifier l’algorithme ; ne soyez donc pas surpris de voir ap-paraître un mélange de français et de « vrai » code. Autre différence entre pseudocode et vrai code : le pseudo code ne se soucie pas, en principe, de problèmes d’ingé-nierie logicielle tels qu’abstraction des données, modularité, traitement d’erreur, etc.Cela permet au pseudo code de refléter plus clairement la substantifique moelle del’algorithme.

Nous commencerons par le tri par insertion, qui est un algorithme efficace quand ils’agit de trier un petit nombre d’éléments. Le tri par insertion s’inspire de la manièredont la plupart des gens tiennent des cartes à jouer. Au début, la main gauche dujoueur est vide et ses cartes sont posées sur la table. Il prend alors sur la table lescartes, une par une, pour les placer dans sa main gauche. Pour savoir où placer unecarte dans son jeu, le joueur la compare avec chacune des cartes déjà présentes danssa main gauche, en examinant les cartes de la droite vers la gauche, comme le montrela figure 2.1. A tout moment, les cartes tenues par la main gauche sont triées ; cescartes étaient, à l’origine, les cartes situées au sommet de la pile sur la table.

2♣♣

♣ 2♣

4♣♣ ♣

♣♣ 4♣

5♣♣ ♣

♣♣ 5♣

7♣

♣♣ ♣

♣ ♣

♣♣7

10♣ ♣♣ ♣♣ ♣

♣♣♣♣♣

10♣

Figure 2.1 Tri de cartes à jouer, via tri par insertion.

Notre pseudo-code pour le tri par insertion se présente sous la forme d’une procé-dure appelée TRI-INSERTION. Elle prend comme paramètre un tableau A[1 . . n] qui

TRI PAR INSERTION

Nous commencerons par le tri par insertion

C’ est un algorithme efficace

quand il s’agit de trier un petit nombre d’éléments.

Le tri par insertion s’inspire de la manière

dont la plupart des gens tiennent des cartes à jouer.

Lélia Blin Université d’Evry6

Page 7: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

14 2 • Premiers pas

Sortie : permutation (réorganisation) ⟨a′1, a′2, . . . , a′n⟩ de la suite donnée en entrée,de façon que a′1 ! a′2 ! · · · ! a′n.

Les nombres à trier sont parfois appelés clés.

Dans cet ouvrage, nous exprimerons généralement les algorithmes sous la formede programmes écrits en un pseudo code qui, à certains égards, rappelle C, Pascalou Java. Si vous connaissez déjà l’un de ces langages, vous n’aurez guère de mal àlire nos algorithmes. Ce qui différencie le pseudo code du « vrai » code c’est que,avec le pseudo code nous employons l’écriture qui nous semble être la plus claireet la plus concise pour spécifier l’algorithme ; ne soyez donc pas surpris de voir ap-paraître un mélange de français et de « vrai » code. Autre différence entre pseudocode et vrai code : le pseudo code ne se soucie pas, en principe, de problèmes d’ingé-nierie logicielle tels qu’abstraction des données, modularité, traitement d’erreur, etc.Cela permet au pseudo code de refléter plus clairement la substantifique moelle del’algorithme.

Nous commencerons par le tri par insertion, qui est un algorithme efficace quand ils’agit de trier un petit nombre d’éléments. Le tri par insertion s’inspire de la manièredont la plupart des gens tiennent des cartes à jouer. Au début, la main gauche dujoueur est vide et ses cartes sont posées sur la table. Il prend alors sur la table lescartes, une par une, pour les placer dans sa main gauche. Pour savoir où placer unecarte dans son jeu, le joueur la compare avec chacune des cartes déjà présentes danssa main gauche, en examinant les cartes de la droite vers la gauche, comme le montrela figure 2.1. A tout moment, les cartes tenues par la main gauche sont triées ; cescartes étaient, à l’origine, les cartes situées au sommet de la pile sur la table.

2♣♣

♣ 2♣

4♣♣ ♣

♣♣ 4♣

5♣♣ ♣

♣♣ 5♣

7♣

♣♣ ♣

♣ ♣

♣♣7

10♣ ♣♣ ♣♣ ♣

♣♣♣♣♣

10♣

Figure 2.1 Tri de cartes à jouer, via tri par insertion.

Notre pseudo-code pour le tri par insertion se présente sous la forme d’une procé-dure appelée TRI-INSERTION. Elle prend comme paramètre un tableau A[1 . . n] qui

TRI PAR INSERTION

Tri des cartes à jouer:

Au début, la main gauche du joueur est vide

et ses cartes sont posées sur la table.

Le joueur prend alors sur la table les cartes,

une par une,

pour les placer dans sa main gauche.

Lélia Blin Université d’Evry7

Page 8: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

14 2 • Premiers pas

Sortie : permutation (réorganisation) ⟨a′1, a′2, . . . , a′n⟩ de la suite donnée en entrée,de façon que a′1 ! a′2 ! · · · ! a′n.

Les nombres à trier sont parfois appelés clés.

Dans cet ouvrage, nous exprimerons généralement les algorithmes sous la formede programmes écrits en un pseudo code qui, à certains égards, rappelle C, Pascalou Java. Si vous connaissez déjà l’un de ces langages, vous n’aurez guère de mal àlire nos algorithmes. Ce qui différencie le pseudo code du « vrai » code c’est que,avec le pseudo code nous employons l’écriture qui nous semble être la plus claireet la plus concise pour spécifier l’algorithme ; ne soyez donc pas surpris de voir ap-paraître un mélange de français et de « vrai » code. Autre différence entre pseudocode et vrai code : le pseudo code ne se soucie pas, en principe, de problèmes d’ingé-nierie logicielle tels qu’abstraction des données, modularité, traitement d’erreur, etc.Cela permet au pseudo code de refléter plus clairement la substantifique moelle del’algorithme.

Nous commencerons par le tri par insertion, qui est un algorithme efficace quand ils’agit de trier un petit nombre d’éléments. Le tri par insertion s’inspire de la manièredont la plupart des gens tiennent des cartes à jouer. Au début, la main gauche dujoueur est vide et ses cartes sont posées sur la table. Il prend alors sur la table lescartes, une par une, pour les placer dans sa main gauche. Pour savoir où placer unecarte dans son jeu, le joueur la compare avec chacune des cartes déjà présentes danssa main gauche, en examinant les cartes de la droite vers la gauche, comme le montrela figure 2.1. A tout moment, les cartes tenues par la main gauche sont triées ; cescartes étaient, à l’origine, les cartes situées au sommet de la pile sur la table.

2♣♣

♣ 2♣

4♣♣ ♣

♣♣ 4♣

5♣♣ ♣

♣♣ 5♣

7♣

♣♣ ♣

♣ ♣

♣♣7

10♣ ♣♣ ♣♣ ♣

♣♣♣♣♣

10♣

Figure 2.1 Tri de cartes à jouer, via tri par insertion.

Notre pseudo-code pour le tri par insertion se présente sous la forme d’une procé-dure appelée TRI-INSERTION. Elle prend comme paramètre un tableau A[1 . . n] qui

TRI PAR INSERTION

Pour savoir où placer une carte dans son jeu,

le joueur la compare avec chacune des cartes déjà présentes dans sa main gauche,

en examinant les cartes de la droite vers la gauche

A tout moment, les cartes tenues par la main gauche sont triées ;

ces cartes étaient, à l’origine, les cartes situées au sommet de la pile sur la table.

Lélia Blin Université d’Evry8

Page 9: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR INSERTION: PRINCIPE

Prendre un élément non encore trié

L’insérer à sa place dans l’ensemble des éléments triés

Lélia Blin Université d’Evry

1 2 3 4 5 ... ... ... ... ... TailleMAX

Eléments triés Eléments non triés

Taille Courante

1 2 3 4 5 ... ... ... ... ... TailleMAX

Eléments triés Eléments non triés

Taille Courante

9

Page 10: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI INSERTION PSEUDO CODE

Lélia Blin Université d’Evry

TRI-INSERTION(A)

pour j ← 2 à longueur[A]

faire clé ← A[j]

i←j−1tant que i > 0 et A[i] > clé

faire A[i + 1] ← A[i]

i←i−1

A[i + 1] ← clé

10

Page 11: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

Lélia Blin Université d’Evry

TRI-INSERTION(A)

pour j ← 2 à longueur[A]

faire clé ← A[j]

i←j−1tant que i > 0 et A[i] > clé

faire A[i + 1] ← A[i]

i←i−1

A[i + 1] ← clé

9 4 3 5 7 2 1

1 2 3 4 5 6 7

j =2 clé=4

‣ i=1: i > 0 et A[1]=9 > clé=4

‣A[i+1]=A[2] ← A[i] =A[1]=9

‣i=i-1=0

9 9 3 5 7 2 1

1 2 3 4 5 6 7

4 9 3 5 7 2 1

1 2 3 4 5 6 7

‣A[i+1]=A[1] ← clé=4

j =3 clé=3

‣ i=2: i > 0 et A[2]=9 > clé=3

‣A[i+1]=A[3] ← A[i] =A[2]=9

‣i=i-1=1

‣A[i+1]=A[1] ← clé=3

4 9 3 5 7 2 1

1 2 3 4 5 6 7

4 9 9 5 7 2 1

1 2 3 4 5 6 7

‣ i=1: i > 0 et A[1]=4 > clé=3

‣A[i+1]=A[2] ← A[i] =A[1]=4

‣i=i-1=0

4 4 9 5 7 2 1

1 2 3 4 5 6 7

3 4 9 5 7 2 1

1 2 3 4 5 6 7

j =4 clé=5

‣ i=3: i > 0 et A[3]=9 > clé=5

‣A[4] ← 9

‣A[3] ← clé=5

‣ i=2: i > 0 et A[2]=4 > clé=5

‣non

3 4 9 5 7 2 1

1 2 3 4 5 6 7

3 4 9 9 7 2 1

1 2 3 4 5 6 7

3 4 5 9 7 2 1

1 2 3 4 5 6 7

TRI PAR INSERTION : EXEMPLE

11

Page 12: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

Lélia Blin Université d’Evry

TRI-INSERTION(A)

pour j ← 2 à longueur[A]

faire clé ← A[j]

i←j−1tant que i > 0 et A[i] > clé

faire A[i + 1] ← A[i]

i←i−1

A[i + 1] ← clé

j =5 clé=7

‣ i=4: i > 0 et A[4]=9 > clé=7

‣A[4] ← 9

‣A[4] ← clé=7

‣ i=3: i > 0 et A[3]=5 > clé=7

‣non

3 4 5 9 7 2 1

1 2 3 4 5 6 7

3 4 5 9 9 2 1

1 2 3 4 5 6 7

3 4 5 7 9 2 1

1 2 3 4 5 6 7

j =6 clé=2 j =7 clé=1

3 4 5 7 9 2 1

1 2 3 4 5 6 7

3 4 5 7 9 9 1

1 2 3 4 5 6 7

3 4 5 7 7 9 1

1 2 3 4 5 6 7

3 4 5 5 7 9 1

1 2 3 4 5 6 7

3 4 4 5 7 9 1

1 2 3 4 5 6 7

3 3 4 5 7 9 1

1 2 3 4 5 6 7

2 3 4 5 7 9 1

1 2 3 4 5 6 7

2 3 4 5 7 9 1

1 2 3 4 5 6 7

2 3 4 5 7 9 9

1 2 3 4 5 6 7

2 3 4 5 7 7 9

1 2 3 4 5 6 7

2 3 4 5 5 7 9

1 2 3 4 5 6 7

2 3 4 4 5 7 9

1 2 3 4 5 6 7

2 3 3 4 5 7 9

1 2 3 4 5 6 7

2 2 3 4 5 7 9

1 2 3 4 5 6 7

1 2 3 4 5 7 9

1 2 3 4 5 6 7

TRI PAR INSERTION : EXEMPLE

12

Page 13: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

INVARIANT DE BOUCLE

Au début de chaque itération de la boucle pour

le sous-tableau A[1 . . j − 1]

se compose des éléments qui occupaient initialement

les positions A[1 . . j − 1]

mais qui sont maintenant triés.

Lélia Blin Université d’Evry13

Page 14: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

INVARIANT DE BOUCLE DÉMONSTRATION

Nous devons montrer trois choses, concernant un invariant de boucle :

Initialisation :

Il est vrai avant la première itération de la boucle.

Conservation :

S’il est vrai avant une itération de la boucle,

il le reste avant l’itération suivante.

Terminaison :

Une fois terminée la boucle, l’invariant fournit une propriété utile qui aide à montrer la validité de l’algorithme.

Lélia Blin Université d’Evry14

Page 15: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

INVARIANT DE BOUCLE REMARQUES

Si les deux premières propriétés sont vérifiées,

alors l’invariant est vrai avant chaque itération de la boucle.

La troisième propriété est peut-être la plus importante:

Elle est utilisé pour prouver la validité de l’algorithme.

Lélia Blin Université d’Evry15

Page 16: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

INVARIANT DE BOUCLE INITIALISATION

Commençons par montrer que:

l’invariant est vérifié avant la première itération de la boucle, quand j = 2.

Le sous-tableau A[1 . . j−1] se compose donc

uniquement de l’élément A[1]

Autrement dit l’élément originel de A[1].

En outre, ce sous-tableau est trié (c’est une trivialité),

ce qui montre bien que l’invariant est vérifié

avant la première itération de la boucle.

Lélia Blin Université d’Evry16

Page 17: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

INVARIANT DE BOUCLE CONSERVATION

Passons ensuite à la deuxième propriété :

Il faut montrer que chaque itération conserve l’invariant.

De manière informelle:

le corps de la boucle pour extérieure fonctionne:

en déplaçant A[j − 1], A[j − 2], A[j − 3], etc.

d’une position vers la droite

jusqu’à ce qu’on trouve la bonne position pour A[j],

auquel cas on insère la valeur de A[j].

TRI-INSERTION(A)

pour j ← 2 à longueur[A]

faire clé ← A[j]

i←j−1tant que i > 0 et A[i] > clé

faire A[i + 1] ← A[i]

i←i−1

A[i + 1] ← clé

Lélia Blin Université d’Evry17

Page 18: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

INVARIANT DE BOUCLE TERMINAISON

Examinon se qui se passe à la terminaison de la boucle

Pour le tri par insertion:

la boucle pour extérieure prend fin quand j dépasse n,

c’est-à-dire quand j = n+1.

En substituant n+1 à j dans la formulation de l’invariant de boucle,

l’on a que le sous-tableau A[1..n] se compose

des éléments qui appartenaient originellement à A[1..n]

mais qui ont été triés depuis lors.

Or, le sous-tableau A[1 . . n] n’est autre que le tableau complet !

Par conséquent, le tableau tout entier est trié.

Donc l’algorithme est correct.

TRI-INSERTION(A)

pour j ← 2 à longueur[A]

faire clé ← A[j]

i←j−1tant que i > 0 et A[i] > clé

faire A[i + 1] ← A[i]

i←i−1

A[i + 1] ← clé

Lélia Blin Université d’Evry18

Page 19: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR INSERTION : COMPLEXITÉ

Lélia Blin Université d’Evry

n − 1!nj=2 tj!n

!j=2!nj=2(tj − 1)

!n

!j=2!nj=2(tj − 1)

!n

TRI-INSERTION(A) cout fois

pour j ← 2 à longueur[A] c n

faire clé ← A[j] c n-1

i←j−1 c n-1

tant que i > 0 et A[i] > clé c

faire A[i + 1] ← A[i] c

i←i−1 c

A[i + 1] ← clé c n-1

19

Page 20: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR INSERTION : COMPLEXITÉ

Lélia Blin Université d’Evry

T (n) = c1n+ c2(n� 1) + c3(n� 1) + c4

nX

j=2

tj + c5

nX

j=2

(tj � 1) + c6

nX

j=2

(tj � 1) + c7(n� 1)

T (n) = (c1 + c2 + c3 + c7)n+ (c4 + c5 + c6)n2

T (n) = O(n2)

20

Page 21: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR SÉLECTION

Lélia Blin Université d’Evry21

Page 22: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR SÉLECTION

Principe général :

Tableau toujours divisé en 2 parties

A chaque étape,

Choisir le plus petit élément de la partie non triée

Mettre cet élément à la fin de la partie triée

1 2 3 4 5 ... ... ... ... ... TailleMAX

Eléments triés Eléments non triés

Taille Courante

1 2 3 4 5 ... ... ... ... ... TailleMAX

Eléments triés

Eléments non triés

Taille CouranteLélia Blin Université d’Evry22

Page 23: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR SÉLECTION: PSEUDO-CODE

TriParSelection(T : Tableau d’entiers, TailleMax : entier) !Entrées : T(tableau d’entiers), TailleMax (taille du tableau)!Sortie : Tableau trié T!Début! TC, p, min,temp : entier;!! Pour TC de 1 jqa TailleMax -1 faire!! ! min ← T[TC];!! ! p ← TC;!! ! Pour i de TC+1 jqa TailleMax faire!! ! ! Si T[i]< min alors!! ! ! ! min ← T[i];!! ! ! ! p ← i;!! ! ! Fin Si!! ! Fin Pour!! ! temp ← T[p];!! ! T[p] ← T[TC];!! ! T[TC] ← temp;!! Fin Pour!Fin

Lélia Blin Université d’Evry23

Page 24: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR SÉLECTION : EXEMPLE

Début! TC, p, min,temp : entier;!! Pour TC de 1 jqa TailleMax -1 faire!! ! min ← T[TC];!! ! p ← TC;!! ! Pour i de TC+1 jqa TailleMax faire!! ! ! Si T[i]< min alors!! ! ! ! min ← T[i];!! ! ! ! p ← i;!! ! ! Fin Si!! ! Fin Pour!! ! temp ← T[p];!! ! T[p] ← T[TC];!! ! T[TC] ← temp;!! Fin Pour!Fin

TC=1

‣ min ← T[1]=9;!

‣ p ← TC=1;!

‣ i=2: T[2]<9: min← T[2]=4;p ← TC=2;!

‣ i=3: T[3]<4: min← T[3]=3;p ← TC=3;!

‣ i=4: T[4]<3!‣ i=5: T[5]<3!‣ i=6: T[6]<3: min← T[6]=2;p ← TC=6;!

‣ i=7: T[7]<2: min← T[7]=1;p ← TC=7;!

‣ temp ← T[p]=1;!

‣ T[7] ← T[1]=9;

‣ T[1] ← temp=1;

9 4 3 5 7 2 1

1 2 3 4 5 6 7

9 4 3 5 7 2 9

1 2 3 4 5 6 7

1 4 3 5 7 2 9

1 2 3 4 5 6 7

Lélia Blin Université d’Evry24

Page 25: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR SÉLECTION : EXEMPLE

Début! TC, p, min,temp : entier;!! Pour TC de 1 jqa TailleMax -1 faire!! ! min ← T[TC];!! ! p ← TC;!! ! Pour i de TC+1 jqa TailleMax faire!! ! ! Si T[i]< min alors!! ! ! ! min ← T[i];!! ! ! ! p ← i;!! ! ! Fin Si!! ! Fin Pour!! ! temp ← T[p];!! ! T[p] ← T[TC];!! ! T[TC] ← temp;!! Fin Pour!Fin

TC=2

‣ min ← T[1]=4;!

‣ p ← TC=2;!

‣ i=3: T[3]<4: min← T[3]=3;p ← TC=3;!

‣ i=4: T[4]<3!‣ i=5: T[5]<3!‣ i=6: T[6]<3: min← T[6]=2;p ← TC=6;!

‣ i=7: T[7]<2!‣ temp ← T[p]=2;!

‣ T[6] ← T[2]=4;

‣ T[2] ← temp=2;

1 4 3 5 7 2 9

1 2 3 4 5 6 7

1 4 3 5 7 4 9

1 2 3 4 5 6 7

1 2 3 5 7 4 9

1 2 3 4 5 6 7

Lélia Blin Université d’Evry25

Page 26: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR SÉLECTION : EXEMPLE

Début! TC, p, min,temp : entier;!! Pour TC de 1 jqa TailleMax -1 faire!! ! min ← T[TC];!! ! p ← TC;!! ! Pour i de TC+1 jqa TailleMax faire!! ! ! Si T[i]< min alors!! ! ! ! min ← T[i];!! ! ! ! p ← i;!! ! ! Fin Si!! ! Fin Pour!! ! temp ← T[p];!! ! T[p] ← T[TC];!! ! T[TC] ← temp;!! Fin Pour!Fin

TC=3

‣ min ← T[3]=3;!

‣ p ← TC=2;!

‣ i=4: T[4]<3!‣ i=5: T[5]<3!‣ i=6: T[6]<3!‣ i=7: T[7]<3!‣ temp ← T[p]=3;!

‣ T[4] ← T[3]=3;

‣ T[3] ← temp=3;

1 2 3 5 7 4 9

1 2 3 4 5 6 7

1 2 3 5 7 4 9

1 2 3 4 5 6 7

‣ min ← T[4]=5;!

‣ p ← TC=4;!

‣ i=5: T[5]<5!‣ i=6: T[6]<5: min← T[6]=4;p ← TC=6;!

‣ i=7: T[7]<4!‣ temp ← T[p]=4;!

‣ T[6] ← T[4]=5;

‣ T[4] ← temp=4;

TC=4 1 2 3 5 7 4 9

1 2 3 4 5 6 7

1 2 3 5 7 5 9

1 2 3 4 5 6 7

1 2 3 4 7 5 9

1 2 3 4 5 6 7

Lélia Blin Université d’Evry26

Page 27: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR SÉLECTION : EXEMPLE

Début! TC, p, min,temp : entier;!! Pour TC de 1 jqa TailleMax -1 faire!! ! min ← T[TC];!! ! p ← TC;!! ! Pour i de TC+1 jqa TailleMax faire!! ! ! Si T[i]< min alors!! ! ! ! min ← T[i];!! ! ! ! p ← i;!! ! ! Fin Si!! ! Fin Pour!! ! temp ← T[p];!! ! T[p] ← T[TC];!! ! T[TC] ← temp;!! Fin Pour!Fin

TC=5

‣ min ← T[5]=7;!

‣ p ← TC=5;!

‣ i=6: T[6]<7: min← T[6]=5;p ← TC=6;!

‣ i=7: T[7]<5!‣ temp ← T[p]=5;!

‣ T[6] ← T[5]=7;

‣ T[3] ← temp=5;

‣ min ← T[6]=7;!

‣ p ← TC=6;!

‣ i=7: T[7]<7!‣ temp ← T[p]=7;!

‣ T[6] ← T[6]=7;

‣ T[7] ← temp=7;

TC=6

Lélia Blin Université d’Evry

1 2 3 4 7 5 9

1 2 3 4 5 6 7

1 2 3 4 7 7 9

1 2 3 4 5 6 7

1 2 3 4 5 7 9

1 2 3 4 5 6 7

1 2 3 4 5 7 9

1 2 3 4 5 6 7

1 2 3 4 5 7 9

1 2 3 4 5 6 7

27

Page 28: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR SÉLECTION: COMPLEXITÉ

Complexité :

Nombre d’itérations : n-1

A chaque itération :

Recherche du minimum : n-TC

Mettre l’élément à sa place : 3

Au total : 3n + n(n-1)/2

Complexité : O(n2)

Lélia Blin Université d’Evry28

Page 29: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR PERMUTATIONS

Lélia Blin Université d’Evry29

Page 30: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR PERMUTATIONS (TRI À BULLES)

Idée Simple :

Si 2 éléments voisins ne sont pas ordonnés on les échange

Deux parties dans le tableau :

Les éléments de la partie triée sont inférieurs aux éléments de la partie non triée.

1 2 3 4 5 ... ... ... ... ... TailleMAX

Eléments triés < Eléments non triés

Taille CouranteLélia Blin Université d’Evry30

Page 31: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR PERMUTATION

TriParPermutation(T : Tableau d’entiers, TailleMax : entier) !Entrées : T(tableau d’entiers), TailleMax (taille du tableau)!Sortie : Tableau trié T!Début! i: entier;! Pour TC de 2 jqa TailleMax faire!! !Pour i de TailleMax en décroissant jqa TC faire!! !! Si T[i-1]> T[i] alors!! !! ! T[i-1]↔ T[i];!

! !! Fin Si!! !Fin Pour!! Fin Pour!Fin

Lélia Blin Université d’Evry31

Page 32: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR SÉLECTION : EXEMPLE

TC=2

‣ i=7: T[6]=2>T[7]=1: 2↔1!

‣ i=6: T[5]=7>T[6]=1: 7↔1!

‣ i=5: T[4]=5>T[5]=1: 5↔1!

‣ i=4: T[3]=3>T[4]=1: 3↔1!

‣ i=3: T[2]=4>T[3]=1: 4↔1!

‣ i=2: T[1]=9>T[2]=1: 9↔1

9 4 3 5 7 2 1

1 2 3 4 5 6 7

Lélia Blin Université d’Evry

Pour TC de 2 jqa TailleMax faire!

! Pour i de TailleMax en décroissant jqa TC !

faire!

! ! ! Si T[i-1]> T[i] alors!

! ! ! ! T[i-1]↔ T[i];!

! ! ! Fin Si!

! ! Fin Pour!

Fin Pour

9 4 3 5 7 1 2

1 2 3 4 5 6 7

9 4 3 5 1 7 2

1 2 3 4 5 6 7

9 4 3 1 5 7 2

1 2 3 4 5 6 7

9 4 1 3 5 7 2

1 2 3 4 5 6 7

9 1 4 3 5 7 2

1 2 3 4 5 6 7

1 9 4 3 5 7 2

1 2 3 4 5 6 7

32

Page 33: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR SÉLECTION : EXEMPLE

TC=3

‣ i=7: T[6]=7>T[7]=2: 2↔7!

‣ i=6: T[5]=5>T[6]=2: 5↔2!

‣ i=5: T[4]=3>T[5]=2: 5↔2!

‣ i=4: T[3]=4>T[4]=2: 3↔2!

‣ i=3: T[2]=9>T[3]=2: 4↔2

Lélia Blin Université d’Evry

Pour TC de 2 jqa TailleMax faire!

! Pour i de TailleMax en décroissant jqa TC !

faire!

! ! ! Si T[i-1]> T[i] alors!

! ! ! ! T[i-1]↔ T[i];!

! ! ! Fin Si!

! ! Fin Pour!

Fin Pour

1 9 4 3 5 7 2

1 2 3 4 5 6 7

1 9 4 3 5 2 7

1 2 3 4 5 6 7

1 9 4 3 2 5 7

1 2 3 4 5 6 7

1 9 4 2 3 5 7

1 2 3 4 5 6 7

1 9 2 4 3 5 7

1 2 3 4 5 6 7

1 2 9 4 3 5 7

1 2 3 4 5 6 7

33

Page 34: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR SÉLECTION : EXEMPLE

TC=4

‣ i=7: T[6]=5>T[7]=7:!

‣ i=6: T[5]=3>T[6]=5:!

‣ i=5: T[4]=4>T[5]=3: 4↔3!

‣ i=4: T[3]=9>T[4]=3: 9↔3

Lélia Blin Université d’Evry

Pour TC de 2 jqa TailleMax faire!

! Pour i de TailleMax en décroissant jqa TC !

faire!

! ! ! Si T[i-1]> T[i] alors!

! ! ! ! T[i-1]↔ T[i];!

! ! ! Fin Si!

! ! Fin Pour!

Fin Pour

1 2 9 4 3 5 7

1 2 3 4 5 6 7

1 2 9 3 4 5 7

1 2 3 4 5 6 7

1 2 3 9 4 5 7

1 2 3 4 5 6 7

TC=5

‣ i=7: T[6]=5>T[7]=7:!

‣ i=6: T[5]=4>T[6]=5:!

‣ i=5: T[4]=9>T[5]=4: 9↔4

1 2 3 9 4 5 7

1 2 3 4 5 6 7

1 2 3 9 4 5 7

1 2 3 4 5 6 7

34

Page 35: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR SÉLECTION : EXEMPLE

TC=6

‣ i=7: T[6]=5>T[7]=7:!

‣ i=6: T[5]=9>T[6]=5: 9↔5

Lélia Blin Université d’Evry

Pour TC de 2 jqa TailleMax faire!

! Pour i de TailleMax en décroissant jqa TC !

faire!

! ! ! Si T[i-1]> T[i] alors!

! ! ! ! T[i-1]↔ T[i];!

! ! ! Fin Si!

! ! Fin Pour!

Fin Pour

TC=7

‣ i=7: T[6]=9>T[7]=7: 9↔7

1 2 3 4 9 5 7

1 2 3 4 5 6 7

1 2 3 4 5 9 7

1 2 3 4 5 6 7

1 2 3 4 5 9 7

1 2 3 4 5 6 7

1 2 3 4 5 7 9

1 2 3 4 5 6 7

35

Page 36: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR PERMUTATION: COMPLEXITÉ

Complexité :

Boucle externe : n-2 fois

Boucle interne : TailleMax-TC fois

Total : (n-1)(n-2)/2

O(n2)

Lélia Blin Université d’Evry36

Page 37: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR FUSION

Lélia Blin Université d’Evry37

Page 38: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI FUSION

Machine à trier des cartes perforées en 1938

1er algo de tri fusion écrit par Von Neumann pour l’EDVAC en 1945

Basé sur le paradigme « Diviser pour Régner »

http://fr.wikipedia.org/wiki/Carte_perforée

Lélia Blin Université d’Evry38

Page 39: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

VON NEUMAN

Lélia Blin Université d’Evry

John von Neumann,

né János Neumann de Margitta en 1903 et mort en 1957

Mathématicien et physicien américano-hongrois.

Il a apporté d'importantes contributions:

mécanique quantique, analyse fonctionnelle, théorie des ensembles,

informatique, sciences économiques.

Il a de plus participé aux programmes militaires américains.

39

http://fr.wikipedia.org/wiki/John_von_Neumann

Page 40: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

ARCHITECTURE DE VON NEUMAN

Lélia Blin Université d’Evry

Von Neumann a donné son nom à

l'architecture de von Neumann

utilisée dans la quasi totalité des ordinateurs modernes,

Il est, en 1945, le rapporteur des travaux pionniers en la matière (First Draft of a Report on the EDVAC).

Le modèle de calculateur à programme auquel son nom reste attaché et qu'il attribuait lui-même à Alan Turing, possède une unique mémoire qui sert à conserver les logiciels et les données.

Ce modèle, extrêmement innovant pour l'époque, est à la base de la conception de nombre d'ordinateurs.

40

http://fr.wikipedia.org/wiki/John_von_Neumann

Page 41: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TURING

Alan Mathison Turing, (23 juin 1912 - 7 juin 1954) Mathématicien britannique, Auteur de l'article fondateur de la science informatique: C’est le coup d'envoi à la création

des calculateurs universels programmables: les ordinateurs. Il y présente sa machine de Turing et les concepts modernes de programmation et de programme

Lélia Blin Université d’Evry41

Page 42: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TURING: PERE DE L’INFORMATIQUE

Il est également à l'origine: de la formalisation des concepts d'algorithme

et de calculabilité qui ont profondément marqué cette discipline.

Son modèle a contribué à établir définitivement

la thèse Church-Turing

qui donne une définition mathématique

au concept intuitif de fonction calculable.

Lélia Blin Université d’Evry42

Page 43: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TURING

Durant la Seconde Guerre mondiale: Il joue un rôle majeur dans les recherches sur les cryptographies générées par la machine Enigma utilisée par les nazis.

Après la guerre: il travaille sur un des tout premiers ordinateurs puis contribue au débat déjà houleux à cette période sur la capacité des machines à penser en établissant le test de Turing.

En 1952 un fait divers indirectement lié à son homosexualité lui vaut des poursuites judiciaires. Pour éviter la prison, il choisit la castration chimique par prise d'œstrogènes.

Il se suicide par empoisonnement au cyanure le 7 juin 1954.

Lélia Blin Université d’Evry43

Page 44: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

PRIX TURING

Depuis 1966 le prix Turing est annuellement décerné par l'Association for Computing Machinery à des personnes ayant apporté une contribution scientifique significative à la science de l'informatique.

Cette récompense est souvent considérée comme l'équivalent du prix Nobel de l'informatique.

Lélia Blin Université d’Evry44

http://fr.wikipedia.org/wiki/Alan_Turing

Page 45: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TURING: RÉABILITATION

En 2009, une courte pétition: « Nous soussignés demandons au premier ministre de s'excuser

pour les poursuites engagées contre Alan Turing qui ont abouti à sa mort prématurée»,

dressée à l'initiative de l'informaticien John Graham-Cumming a été envoyée à Gordon Brown. En septembre 2009, le Premier ministre britannique a présenté des

regrets au nom du gouvernement britannique pour le traitement qui lui a été infligé

Lélia Blin Université d’Evry45

http://fr.wikipedia.org/wiki/Alan_Turing

Page 46: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

DIVISER POUR RÉGNER

Séparer le pb en plusieurs sous-problèmes similaires au problème initial

3 étapes :

Diviser : le pb en un certain nombre de sous-pb

Régner : sur les sous-pbs en les résolvant

Combiner : les solutions des sous-pbs en une solution unique.

46Lélia Blin Université d’Evry

Page 47: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI FUSION

3 étapes :

Diviser :

la séquence de n éléments à trier en 2 sous-séquences de n/2 éléments.

Régner :

Trier les 2 sous-séquences récursivement à l’aide du tri fusion

Combiner :

Fusionner les 2 sous-séquences triées pour produire la séquence triée.

Toute séquence de longueur 1 est triée

Action Principale : la fusion

47Lélia Blin Université d’Evry

Page 48: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI FUSION

TriFusion(T : Tableau d’entiers,p: entier, r:entier) !Entrées : T(tableau d’entiers), p et r (indices du tableau tels que p ≤ r)!

Sortie : Tableau trié T entre les indices p et r!Début!! Si p < r!! !q ← ⎣(p+r)/2⎦!! !TriFusion(T,p,q)!! !TriFusion(T,q+1,r)!! !Fusion(T,p,q,r)!! Fin Si!Fin

48Lélia Blin Université d’Evry

Page 49: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

LA FUSION

Fusion(T : Tableau d’entiers,p: entier, q: entier, r:entier) !Entrées : T(tableau d’entiers), p,q et r (indices du tableau tels que p < q ≤

r)!Sortie : Tableau trié T entre les indices p et r!Pré-condition : T[p..q-1] et T[q..r] sont triés!Début! i,j,k : entier;!! B : tableau d’entiers!! i ← p; k ← p; j ← q;!! Tant que (i < q et j ≤ r) faire!! ! Si T[i]< T[j] alors!! ! ! B[k]← T[i];!! ! ! i ← i + 1;!! ! Sinon!! ! ! B[k]← T[j];!! ! ! j ← j + 1;!! ! Fin Si!! ! k ← k + 1;!!! Fin Tant Que

Tant que (i < q) faire B[k]← T[i]; i ← i + 1; k ← k + 1; Fin Tant Que Tant que (j ≤ r) faire B[k]← T[j]; j ← j + 1; k ← k + 1; Fin Tant Que T ← B Fin

49Lélia Blin Université d’Evry

Page 50: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI FUSION: EXEMPLE

50Lélia Blin Université d’Evry

5 8 2 6 4 1 31 2 3 4 5 6 7

78

Page 51: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI FUSION: EXEMPLE

51Lélia Blin Université d’Evry

5 8 2 6 4 1 31 2 3 4 5 6 7

78

51

82

23

64

45

16

37

78

Page 52: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI FUSION: EXEMPLE

52Lélia Blin Université d’Evry

5 8 2 6 4 1 31 2 3 4 5 6 7

78

51

82

23

64

45

16

37

78

51

82

23

64

15

46

37

78

Page 53: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI FUSION: EXEMPLE

53Lélia Blin Université d’Evry

5 8 2 6 4 1 31 2 3 4 5 6 7

78

51

82

23

64

45

16

37

78

51

82

23

64

15

46

37

78

21

52

63

84

15

36

47

78

Page 54: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI FUSION: EXEMPLE

54

5 8 2 6 4 1 31 2 3 4 5 6 7

78

51

82

23

64

45

16

37

78

51

82

23

64

15

46

37

78

21

52

63

84

15

36

47

78

1 2 3 4 5 6 71 2 3 4 5 6 7

88

Lélia Blin Université d’Evry

Page 55: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI FUSION: EXEMPLE

55Lélia Blin Université d’Evry

1 2 3 4 5 6 7 8

TF(A,1,1)

1

TF(A,2,2)

2

TF(A,3,3)

3

TF(A,4,4)

4

TF(A,5,5)

5

TF(A,6,6)

6

TF(A,7,7)

7

TF(A,8,8)

8

Fusion

1

(A,1,1,2)

2

Fusion

3

(A,3,3,4)

4

Fusion

5

(A,5,5,6)

6

Fusion

7

(A,7,7,8)

8

Fusion

1

(A,1,

2

3

3

4)

4

Fusion

5

(A,5,

6

6

7

8)

8

1 2 3 4 5 6 7 8

Page 56: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI FUSION : COMPLEXITÉ

La preuve est technique mais

Intuitivement il faut résoudre :

Tri(n) = 2 * Tri(n/2) + Θ(n)

Complexité finale : O(n log2 n)

56Lélia Blin Université d’Evry

Page 57: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI PAR RAPIDE

Lélia Blin Université d’Evry57

Page 58: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI RAPIDE

Proposé par Hoare en 1962

Diviser : T[p..r] est divisé en 2 sous-tableaux non vide T[p..q] et T[q+1..r] tel que :

Chaque élément de T[p..q] soit inférieur à chaque élément de T[q+1..r]

fonction Partitionner

!

Régner : 2 sous-tableaux triés grâce à la récursivité

fonction TriRapide

Combiner : 2 sous-tableaux triés sur place : Rien à faire

58Lélia Blin Université d’Evry

Page 59: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI RAPIDE

59

140 7 • Tri rapide

Diviser : Le tableau A[p . . r] est partitionné (réarrangé) en deux sous-tableaux(éventuellement vides) A[p . . q − 1] et A[q + 1 . . r] tels que chaque élément deA[p . . q − 1] soit inférieur ou égal à A[q] qui, lui-même, est inférieur ou égalà chaque élément de A[q + 1 . . r]. L’indice q est calculé dans le cadre de cetteprocédure de partitionnement.

Régner : Les deux sous-tableaux A[p . . q−1] et A[q+1 . . r] sont triés par des appelsrécursifs au tri rapide.

Combiner : Comme les sous-tableaux sont triés sur place, aucun travail n’est néces-saire pour les recombiner : le tableau A[p . . r] tout entier est maintenant trié.

La procédure suivante implémente le tri rapide.

TRI-RAPIDE(A, p, r)1 si p < r2 alors q ← PARTITION(A, p, r)3 TRI-RAPIDE(A, p, q − 1)4 TRI-RAPIDE(A, q + 1, r)

Pour trier un tableau A entier, l’appel initial est TRI-RAPIDE(A, 1, longueur[A]).

a) Partitionner le tableau

Le point principal de l’algorithme est la procédure PARTITION, qui réarrange le sous-tableau A[p . . r] sur place.

PARTITION(A, p, r)1 x ← A[r]2 i ← p − 13 pour j ← p à r − 14 faire si A[j] ! x5 alors i ← i + 16 permuter A[i] ↔ A[j]7 permuter A[i + 1] ↔ A[r]8 retourner i + 1

La figure 7.1 montre le fonctionnement de PARTITION sur un tableau à 8éléments. PARTITION sélectionne toujours un élément x = A[r] comme élé-ment pivot autour duquel se fera le partitionnement du sous-tableau A[p . . r].La procédure continue et le tableau est partitionné en quatre régions (éven-tuellement vides). Au début de chaque itération de la boucle pour des lignes3–6, chaque région satisfait à certaines propriétés qui définissent un invariantde boucle : Au début de chaque itération de la boucle des lignes 3–6, pour toutindice k,

1) Si p ! k ! i, alors A[k] ! x.

PARTITION(A,p,q)!x ← A[p]!i ← p!j ← q!While i≠j!

if A[j]<x!if A[i]>x ! A[i] ↔ A[j];j--;i++!

else: i++!else: j--!

A[p] ↔ A[j]!return i

Page 60: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI RAPIDE: EXEMPLE

60Lélia Blin Université d’Evry

5 8 2 6 4 1 31 2 3 4 5 6 7

78

Pivot

5 8 2 6 4 1 31 2 3 4 5 6 7

78

Espace de travail

en partant de gauche le 1er élément aussi

grand que le pivot5 8 2 6 4 1 31 2 3 4 5 6 7

78

en partant de droite le 1er élément plus

petit que le pivot 5 8 2 6 4 1 31 2 3 4 5 6 7

78

échanger les éléments 5 3 2 6 4 1 81 2 3 4 5 6 7

78

Partition(Tab,1,7)

Page 61: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI RAPIDE: EXEMPLE

61Lélia Blin Université d’Evry

5 3 2 6 4 1 81 2 3 4 5 6 7

78

5 3 2 6 4 1 81 2 3 4 5 6 7

78

5 3 2 1 4 6 81 2 3 4 5 6 7

78

5 3 2 1 4 6 81 2 3 4 5 6 7

78

4 3 2 1 5 6 81 2 3 4 5 6 7

78

Page 62: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI RAPIDE: EXEMPLE

62Lélia Blin Université d’Evry

4 3 2 11 2 3 4

5 6 85 6 7

78

4 3 2 11 2 3 4

5 6 85 6 7

78

1 3 2 41 2 3 4

1 3 2 41 2 3 4

1 3 2 41 2 3 4

1 2 3 41 2 3 4

1 2 3 41 2 3 4

5 6 85 6 7

78

5 6 85 6 7

78

5 6 75 6 7

88

5 6 75 6 7

88

1 2 3 41 2 3 4

5 6 75 6 7

88

Page 63: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI RAPIDE

63Lélia Blin Université d’Evry

Partition(Tab,1,TailleMax)

Partition(Tab,1,q-1) Partition(Tab,q,TailleMax)

Partition(Tab,1,q'-1) Partition(Tab,q'',TailleMax)Partition(Tab,q',q-1) Partition(Tab,q,q''-1)

Partition(Tab,1,1) Partition(Tab,2,21) Partition(Tab,TailleMax,TailleMax)

Page 64: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRI RAPIDE : COMPLEXITÉ

Temps d’exécution dépend de l’équilibre ou non du partitionnement.

Si le partitionnement est équilibré : aussi rapide que le tri fusion

Si le partitionnement est déséquilibré : aussi lent que le tri par insertion

64Lélia Blin Université d’Evry

Page 65: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

PARTITIONNEMENT DANS LE PIRE CAS

2 sous-tableaux de : 1 élément n-1 éléments

Supposons que ce partitionnement intervienne à chaque étape. Le partitionnement coûte Θ(n) La récurrence :

T(n) = T(n-1) + Θ(n) T(1) = Θ(1)

65Lélia Blin Université d’Evry

Page 66: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

PARTITIONNEMENT DANS LE PIRE CAS

T(n) = Σ O(k)

= O(Σ k)

= O(n2)

Ce partitionnement apparaît quand le tableau est trié !!!!

Pire dans ce cas là le tri par insertion est linéaire !!

66Lélia Blin Université d’Evry

Page 67: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

PARTITIONNEMENT DANS LE MEILLEUR CAS

Partitionnement est équilibré.

Il faut donc résoudre :

T(n) = 2T(n/2) + Ω(n)

Solution : T(n) = Ω(n log2 n)

67Lélia Blin Université d’Evry

Page 68: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

TRIS PAR COMPARAISONS

tous les tris vu dans ce cours sont tris par comparaisons

un tri par comparaison est un tri dans lequel on compare une paire d’éléments.

contrairement par exemple au tri dénombrement qui est un tri linéaire

68Lélia Blin Université d’Evry

Page 69: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

Exemple le tri par dénombrement

soit A un tableau d’entier inférieur ou égal à 6

!

soit C un tableau auxiliaire qui compte le nombre de fois qu’apparaît un entier

!

!

soit B le tableau trié

TRI LINÉAIRE

3 6 4 1 3 4 1 4

0 0 0 0 0 0

1 2 3 4 5 6

1 111 2 22 3

1 1 3 3 4 4 4 6

69Lélia Blin Université d’Evry

Page 70: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

OPTIMALITÉ DES TRIS VUS EN COURS

La borne inférieure pour un tri par comparaison est:

Ω(n log2 n)

Donc seul les tris qui ont une complexité en

O(n log2 n) sont optimaux.

Le tri fusion est optimal mais pas la version du tri rapide présenté dans ce cours!

70Lélia Blin Université d’Evry

Page 71: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

RÉCAPITULATIF

AlgorithmePire

des cas

O

Meilleur des cas Ω

Principe

Insertion O(n   Ω(n)Prendre un élément non encore trié L’insérer à sa place dans l’ensemble

des éléments triés

Sélection O(nChoisir le plus petit élément de la

partie non triée Mettre cet élément à la fin de la

partie triée

Tri Bulle O(n   Si 2 éléments voisins ne sont pas ordonnés on les échange

Tri Fusion O(nlog(n)) récursif

Tri Rapide O(n²) Ω(nlog(n)) récursif avec pivot sur place

71Lélia Blin Université d’Evry

Page 72: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

EXPÉRIMENTATIONS: COMPARAISONS POUR 10 VALEURS

Le tableau est croissant Le tableau est décroissantLe tableau est aléatoire

72Lélia Blin Université d’Evry

Page 73: INAL 3 Les tris -  · IDÉE FONDAMENTALE Une collection de valeurs de même type (rangées dans un tableau) Un opérateur de comparaison (≤,≥, >,

BIBLIOGRAPHIE

Certaine partie de ce cours sont tiré du livre Introduction à l’Algorithmique

Lélia Blin Université d’Evry73

Lélia Blin Université d’Evry