Académique Documents
Professionnel Documents
Culture Documents
Durée : 2h
Capacités attendues
1 Ecrire un algorithme de tri
Décrire un invariant de boucle qui prouve la correction des tris par insertion
2
et sélection.
I – NÉCESSITÉ DE TRIER.......................................................................................................................................................... 2
II – TRI PAR SÉLECTION.......................................................................................................................................................... 2
2.1 – PRINCIPE............................................................................................................................................................................... 2
2.2 – PSEUDO-CODE........................................................................................................................................................................4
2.3 – COMPLEXITÉ TEMPORELLE.........................................................................................................................................................4
2.4 – VALIDITÉ DU TRI......................................................................................................................................................................4
III – TRI PAR INSERTION......................................................................................................................................................... 5
3.1 – PRINCIPE............................................................................................................................................................................... 5
3.2 – PSEUDO-CODE........................................................................................................................................................................7
3.3 – COMPLEXITÉ TEMPORELLE.........................................................................................................................................................7
Algorithmique
Durée : 2h
I – Nécessité de trier.
Les méthodes de tri sont essentielles dans la manipulation de données. En effet, pour rechercher un
élément dans une liste, il est beaucoup plus simple que ces éléments soient ordonnés. (Voir recherche par
dichotomie par exemple).
Il existe pour cela des dizaines d’algorithmes de tri et leurs variantes. Nous allons étudier ici des tris qui
s’appuient sur la comparaison deux à deux des éléments d’une liste.
Si, pour un algorithme donné, il existe un invariant, c’est-à-dire une hypothèse H qui vérifie l’initialisation, la
conservation et la terminaison, alors on dit que l’algorithme est valide.
Rechercher l’indice du plus petit (ou du plus grand) élément du tableau, à l’aide d’un parcours total, puis
échanger cet élément avec l’élément d’indice 0.
Rechercher l’indice du deuxième plus petit élément (ou le deuxième plus grand) du tableau et échanger
l’élément concerné avec l’élément d’indice 1.
Poursuivre ainsi jusqu’à la fin du tableau.
Algorithmique
Durée : 2h
http://lwh.free.fr/pages/algo/tri/tri_selection.html
2.2 – Pseudo-code.
Procedure tri_selection(t)
Pour i allant de 0 à longueur(t)-2
Indice_min i
Pour j allant de i+1 à longueur(t)-1
Si t[j] < t[indice_min] alors
Indice_min j
FinSi
FinPour
Si indice_min <> i alors
Echanger t[i] et t[indice_min]
FinSi
FinPour
Renvoyer t
Algorithmique
Durée : 2h
Ce tri est considéré comme inefficace car il est peu performant, comparé à d’autres algorithmes de tri.
Correction partielle : Pour montrer que l’algorithme est partiellement correct, il faut démontrer par
récurrence l’invariance de la propriété suivante au cours du déroulement de l’algorithme.
« A la fin de l’étape i, le sous-tableau[0, 1, …, i-1] est trié ».
Cette propriété est vraie au premier rang, car le sous-tableau[0], composé d’un unique élément est
nécessairement trié.
Cette propriété demeure vraie tout au long du déroulement de l’algorithme, ce qui assure qu’à la fin le
tableau tout entier sera trié.
http://lwh.free.fr/pages/algo/tri/tri_insertion.html
Algorithmique
Durée : 2h
3.2 – Pseudo-code.
Procedure tri_insertion(t)
Pour i allant de 0 à longueur(t)-1
ji
x t[i]
TantQue j > 0 ET t[j-1] > x
t[j] t[j-1]
j j-1
Fin TantQue
t[j] x
FinPour
Renvoyer t
L’algorithme est composé d’une boucle « tant que » imbriquée dans une boucle « pour ». Pour prouver que
cet algorithme se termine, il faut trouver un variant de boucle qui décroit strictement à chaque tour de boucle.
Dans notre cas, ce variant est « n ».