td08 Co

Vous aimerez peut-être aussi

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 3

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 lordre croissant.
a- Algorithme Test(T : tableau dentiers; n : entier) : booleen
d
ebut
variable i : entier
i0
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 dentiers; n : entier) : entier
d
ebut
variable i, c: entier
c0
pour i de 0 `
a n 2 faire
si T [i] > T [i + 1] alors
c c+1
fin si
fin pour
retourner c
fin

Exercice 2 : Nombre dop


erations
a- Pour effectuer k recherches dans un tableau non trie de taille n il faut
erations.
compter en moyenne kn
2 op
b- Trier le tableau se fait en n log2 n auquel il faut ajouter la recherche dichotomique qui se fait en log2 n et quon doit faire k fois : (n + k) log2 n.
c- En moyenne il est donc plus interessant de trier le tableau et de faire une
recherche dichotomique des que k log2 n.

Exercice 3 : Suppressions
a- On commence par chercher lelement s `a supprimer et ensuite on decale
les suivants.
Algorithme suppression(T : tableau dentiers, s, k : entier) : entier
d
ebut
variable i, r : entier
r0
tant que r k 1 et T [r] 6= s faire
r r+1
fin tant que
si r > k 1 alors
retourner k
sinon
pour i de r `
a k 2 faire
T [i] T [i + 1]
fin pour
retourner k 1
fin si
fin
b- Algorithme suppressionOrdonnee(T : tableau dentiers, s, k : entier) :
entier
d
ebut
variable i, r, d : entier
r0
tant que r k 1 et T [r] s faire
si T [r] = s alors
d d+1
fin si
r r+1
fin tant que
si r > k 1 et d = 0 alors
retourner k
sinon
pour i de r d `
a k 2 faire
T [i] T [i + d]
fin pour
retourner k d
fin si
fin

Exercice 4 : Ordre d
ecroissant
a- Algorithme triSelection(T : tableau dentiers, n : entier) : rien
d
ebut

variable i, jM ax : entier
pour i de 0 `
a n 2 faire
jM ax indiceMax(T , n, i)
Permuter(T , i, jMax)
fin pour
fin
Algorithme Permuter(T : tableau dentiers, i, j : entier) : rien
d
ebut
variable x : entier
x T [i]
T [i] T [j]
T [j] x
fin
Algorithme indiceMax(T : tableau dentiers, n, k : entier) : entier
d
ebut
variable i, iMax : entier
iMax k
pour i de k + 1 `
a n 1 faire
si T [i] > T [iMax] alors
iMax i
fin si
fin pour
retourner iMax
fin
b- Algorithme triInsertion(T : tableau dentiers, n : entier) : rien
d
ebut
variable i : entier
pour i de 1 `
a n 1 faire
Inserer(T , i)
fin pour
fin
Algorithme inserer(T : tableau dentiers, i : entier) : rien
d
ebut
variable j, x : entier
x T [i]
j i1
tant que 0 j et x T [j] faire
T [j + 1] T [j]
j j1
fin tant que
T [j + 1] x
fin

Vous aimerez peut-être aussi