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
ebut
variable i: entier
i0
tant que i < n 1 et T[i]T[i+ 1] faire
ii+ 1
fin tant que
retourner in1
fin
b- Algorithme Compter(T: tableau d’entiers; n: entier) : entier
ebut
variable i,c: entier
c0
pour ide 0`a n2faire
si T[i]> T [i+ 1] alors
cc+ 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 klog2n.
1
Exercice 3 : Suppressions
a- On commence par chercher l’´el´ement s`a supprimer et ensuite on ecale
les suivants.
Algorithme suppression(T: tableau d’entiers, s,k: entier) : entier
ebut
variable i,r: entier
r0
tant que rk1 et T[r]6=sfaire
rr+ 1
fin tant que
si r > k 1alors
retourner k
sinon
pour ide r`a k2faire
T[i]T[i+ 1]
fin pour
retourner k1
fin si
fin
b- Algorithme suppressionOrdonn´ee(T: tableau d’entiers, s,k: entier) :
entier
ebut
variable i,r,d: entier
r0
tant que rk1et T[r]sfaire
si T[r] = salors
dd+ 1
fin si
rr+ 1
fin tant que
si r > k 1et d= 0 alors
retourner k
sinon
pour ide rd`a k2faire
T[i]T[i+d]
fin pour
retourner kd
fin si
fin
Exercice 4 : Ordre d´ecroissant
a- Algorithme triS´election(T: tableau d’entiers, n: entier) : rien
ebut
2
variable i,jM ax : entier
pour ide 0`a n2faire
jM ax indiceMax(T,n,i)
Permuter(T,i,jMax)
fin pour
fin
Algorithme Permuter(T: tableau d’entiers, i,j: entier) : rien
ebut
variable x: entier
xT[i]
T[i]T[j]
T[j]x
fin
Algorithme indiceMax(T: tableau d’entiers, n,k: entier) : entier
ebut
variable i,iMax : entier
iMax k
pour ide k+ 1 `a n1faire
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
ebut
variable i: entier
pour ide 1`a n1faire
Ins´erer(T,i)
fin pour
fin
Algorithme ins´erer(T: tableau d’entiers, i: entier) : rien
ebut
variable j,x: entier
xT[i]
ji1
tant que 0jet xT[j]faire
T[j+ 1] T[j]
jj1
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 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 !