L3 - Introduction à l’algorithmique (Année 2013/2014) F .Papadopoulos/B. Francesco/G. Lu-
carelli
TD3 - Tri
Exercice 1. Tri
Vous allez trier par ordre croissant le tableau suivant en utilisant différents algorithmes (expli-
citez clairement les différentes étapes) :
12 7 1 4 22 31 6 8 15 17 34 16
1. Utiliser les algorithmes vus en cours (tri par insertion, tri fusion, tri rapide) pour trier le
tableau.
Il existe de nombreuses façons de trier un tableau. En voici une autre appelée tri à bulle :
Tri à Bulle(T:tableau d’entier de taille n) :
initialisation :
temp, i=0;
permutation=TRUE;
while permutation do
permutation=FALSE;
for (i== 0,in2,i+ +)do
if (T[i]>T[i+1]) then
temp=T[i];
T[i]=T[i+1];
T[i+1]=temp;
permutation=TRUE;
end
end
end
2. Utiliser le tri à bulles pour trier le tableau.
3. Montrer que le tri à bulle termine et qu’il renvoie le bon résultat. Indication : montrer
l’invariant I(j) : "à la fin de la jième itération de la boucle for, les jdernières cases du
tableau contiennent les jplus grand éléments triés par ordre croissant".
4. Donner la complexité du tri à bulle dans le pire cas (complexité en nombre de comparai-
sons et en nombre de permutations).
Voici encore une autre façon de trier un tableau : le tri par énumération (on suppose qu’un
entier donné n’apparaît pas deux fois dans le tableau). Considérons un tableau Ten entrée,
pour chaque élément T[i]avec i∈ {0, . . . , n 1}, on calcule eile nombre d’entier de Tplus
petit que T[i]puis on insère T[i]à la position eidans le tableau de sortie.
5. Utiliser le tri par énumération pour trier le tableau.
6. Écrivez un algorithme pour le tri par énumération.
7. Donner la complexité du tri par énumération.
1
Exercice 2. Recherche dichotomique
La recherche dichotomique est un algorithmique de type diviser pour régner qui cherche l’em-
placement d’un entier dans un tableau de taille ntrié par ordre croissant. Cette algorithme
compare l’entier en position bn
2cdu tableau à l’entier recherché et selon le résultat :
soit la recherche s’arrête ;
soit on procède récursivement sur le sous-tableau [1,...,bn
2c − 1] ;
soit on procède récursivement sur le sous-tableau [bn
2c+ 1, . . . , n].
.Écrivez un algorithme mettant en oeuvre la recherche dichotomique et donner la complexité
de cet algorithme dans le pire cas.
Exercice 3. Deuxième plus grand élément
Considérons une liste qui n’est pas trié. Nous cherchons le deuxième plus grand élément de la
liste.
1. Proposer un algorithme naïf résolvant ce problème. Donnez la complexité exacte de cette
algorithme.
Maintenant, pour trouver le deuxième plus grand élément, nous allons utiliser un tournoi. On
regroupe les entiers par paquets de deux et pour chaque paquet, le plus petit est éliminé. On
recommence l’opération juste ce qu’il n’en reste plus qu’un. On suppose que la liste est de
taille n= 2k.
2. Comment trouver le deuxième plus grand élément une fois le tournoi terminé?
3. Donner la complexité exacte de cet algorithme.
Exercice 4. Tri simple
Considérons maintenant un tableau Tde taille ndont les élément du tableau sont compris
entre 1et n(un même entier peut apparaître plusieurs fois). Le tri simple consiste à créer un
tableau où la case d’indice icontient le nombre d’occurrences de idans T. Ce tableau est
ensuite utilisé pour créer le tableau de sorti.
1. Ecrire un algorithme mettant en oeuvre le tri simple.
2. Quelle est la complexité du tri simple.
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !