L3 Informatique Année 2021 2022
UE ALGO5 TD2 Séance 3 : Tri par segmentation
Objectifs
À la n de cette séance, vous devriez être capable de :
structurer un algorithme en utilisant des sous fonctions ayant une signature et des pré- et post-conditions ; spécier et prouver des invariants de boucle ;
écrire des algorithmes récursifs comme le tri par segmentation.
Exercice 1. Tri par segmentation
On rappelle le schéma algorithmique du tri par segmentation :
1 TriSegmentation(T):
sila tailledeT est>1 alors
3 Soitpune valeur«pivot»
Partitionner T en T1, T2 t.q.:
5 −T1contient les valeurs deT inférieures ou égales àp
−T2contient les valeurs deT supérieures àp
7 TriSegmentation(T1) TriSegmentation(T2)
Réalisation
Q 1. Le partitionnement sera réalisé par une procédure intermédiaire nomméePartition. Donner la spécication de cette procédure (signature, pré- et post-conditions).
Q 2. Donner une réalisation deTriSegmentationen utilisantPartition.
Q 3. Donner une réalisation de Partition : commencer par exprimer sous forme de schéma l'invariant de la boucle principale.
Analyse
Q 4. Quel est le coût dans le pire cas, dans le meilleur cas de Partition? de TriSegmentation? Donner des exemples (de taille 10) de pire et meilleurs cas.
Q 5. Donner le coût dePartition(T)dans le cas où tous les éléments de T ont la même valeur. Proposer une correction dePartitionsusceptible d'améliorer ce coût.