Correction TD 8 : Algorithmes de tri
Licence 1 MASS semestre 2, 2007/2008
Exercice 1 : Tester
On consid`ere que le tri devrait ˆetre selon l’ordre croissant.
a- Algorithme Test(T: tableau d’entiers; n: entier) : bool´een
d´ebut
variable i: entier
i←0
tant que i < n −1 et T[i]≤T[i+ 1] faire
i←i+ 1
fin tant que
retourner i≥n−1
fin
b- Algorithme Compter(T: tableau d’entiers; n: entier) : entier
d´ebut
variable i,c: entier
c←0
pour ide 0`a n−2faire
si T[i]> T [i+ 1] alors
c←c+ 1
fin si
fin pour
retourner c
fin
Exercice 2 : Nombre d’op´erations
a- Pour effectuer krecherches dans un tableau non tri´e de taille nil faut
compter en moyenne kn
2op´erations.
b- Trier le tableau se fait en nlog2nauquel il faut ajouter la recherche di-
chotomique qui se fait en log2net qu’on doit faire kfois : (n+k) log2n.
c- En moyenne il est donc plus int´eressant de trier le tableau et de faire une
recherche dichotomique des que k≥log2n.
1
Exercice 3 : Suppressions
a- On commence par chercher l’´el´ement s`a supprimer et ensuite on d´ecale
les suivants.
Algorithme suppression(T: tableau d’entiers, s,k: entier) : entier
d´ebut
variable i,r: entier
r←0
tant que r≤k−1 et T[r]6=sfaire
r←r+ 1
fin tant que
si r > k −1alors
retourner k
sinon
pour ide r`a k−2faire
T[i]←T[i+ 1]
fin pour
retourner k−1
fin si
fin
b- Algorithme suppressionOrdonn´ee(T: tableau d’entiers, s,k: entier) :
entier
d´ebut
variable i,r,d: entier
r←0
tant que r≤k−1et T[r]≤sfaire
si T[r] = salors
d←d+ 1
fin si
r←r+ 1
fin tant que
si r > k −1et d= 0 alors
retourner k
sinon
pour ide r−d`a k−2faire
T[i]←T[i+d]
fin pour
retourner k−d
fin si
fin
Exercice 4 : Ordre d´ecroissant
a- Algorithme triS´election(T: tableau d’entiers, n: entier) : rien
d´ebut
2
variable i,jM ax : entier
pour ide 0`a n−2faire
jM ax ←indiceMax(T,n,i)
Permuter(T,i,jMax)
fin pour
fin
Algorithme Permuter(T: tableau d’entiers, i,j: entier) : rien
d´ebut
variable x: entier
x←T[i]
T[i]←T[j]
T[j]←x
fin
Algorithme indiceMax(T: tableau d’entiers, n,k: entier) : entier
d´ebut
variable i,iMax : entier
iMax ←k
pour ide k+ 1 `a n−1faire
si T[i]> T [iMax] alors
iMax ←i
fin si
fin pour
retourner iMax
fin
b- Algorithme triInsertion(T: tableau d’entiers, n: entier) : rien
d´ebut
variable i: entier
pour ide 1`a n−1faire
Ins´erer(T,i)
fin pour
fin
Algorithme ins´erer(T: tableau d’entiers, i: entier) : rien
d´ebut
variable j,x: entier
x←T[i]
j←i−1
tant que 0≤jet x≥T[j]faire
T[j+ 1] ←T[j]
j←j−1
fin tant que
T[j+ 1] ←x
fin
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!