inal 3 les tris - · idÉe fondamentale une collection de valeurs de même type (rangées dans un...
TRANSCRIPT
![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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/1.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/2.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/3.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/4.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/5.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/6.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/7.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/8.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/9.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/10.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/11.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/12.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/13.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/14.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/15.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/16.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/17.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/18.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/19.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/20.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/21.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/22.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/23.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/24.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/25.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/26.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/27.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/28.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/29.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/30.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/31.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/32.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/33.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/34.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/35.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/36.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/37.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/38.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/39.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/40.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/41.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/42.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/43.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/44.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/45.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/46.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/47.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/48.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/49.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/50.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/51.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/52.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/53.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/54.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/55.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/56.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/57.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/58.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/59.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/60.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/61.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/62.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/63.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/64.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/65.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/66.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/67.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/68.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/69.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/70.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/71.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/72.jpg)
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 (≤,≥, >,](https://reader031.vdocuments.fr/reader031/viewer/2022011811/5e15ad8613e98d50b46b7fd9/html5/thumbnails/73.jpg)
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