Vous êtes sur la page 1sur 6

IPEIEM 2013-2014

1
re
anne MP, PC, PT Page 1

Correction Srie TD N 5 : Tri des Tableaux

Exercice 1 [Tri par dnombrement] :
Question 1 :
Drouler l'algorithme de tri par dnombrement sur le tableau : A [7, 1, 3, 1, 2, 4, 5,2, 4, 3]
Le tableau A de taille N = 10, commence par lindice 1et peut contenir des valeurs nulles
La valeur maximale contenue dans A est K = 7
Le tableau D de taille K + 1 = 8, commence par lindice 0

A [7, 1, 3, 1, 2, 4, 5, 2, 4, 3]

Phase 1: D = [0, 0, 0, 0, 0, 0, 0, 0]
Phase 2: D = [0, 2, 2, 2, 2, 1, 0, 1]
Phase 3: A = [1, 1, 2, 2, 3, 3, 4, 4, 5, 7]

Question 2 :

Procdure frquence (A:TAB, D:tableau [0..k] dentiers, N, k: entier)
Var i : entier
Dbut
Pour i de 0 k faire
D[i] 0
Fin pour

Pour i de 1 N faire
D [A [i]] D [A [i]] + 1
Fin pour
Fin

Question 3 :

Procdure tri_dnombrement (VAR A:TAB ; D:tableau [0..K] dentiers,
N, k : entier)
Var i, Indice : entier
Dbut
Indice 1
Pour i de 0 k faire //parcourir le tableau D
Pour j de 1 D [i] faire
A [Indice] i
Indice Indice + 1
Fin pour
Fin pour
Fin


IPEIEM 2013-2014
1
re
anne MP, PC, PT Page 2

Exercice 2 : [Tri par comptage]


Question 1 :
Procdure comptage (T:TAB, N:entier, VAR C:TAB)
Var i, j : entier
Dbut
Pour i de 1 N faire
C[i] 0
Pour j de 1 N faire
Si (T[j]>T[i]) alors
C[i] C[i] + 1
Fin si
Fin pour
Fin pour
Fin

Question 2 :
Procdure tri_comptage (VAR T:TAB, N:entier)
Var i, j : entier
C:TAB
Dbut
Comptage (T, N, C)
Indice 0
Rpter
Pour i de 1 N faire
Si (C[i] = indice) alors
Permuter (C[i], C [indice + 1])
Permuter (T[i], T [indice + 1])
Fin si
Fin pour
Indice Indice + 1
Jusqu (Indice = N)
Fin











IPEIEM 2013-2014
1
re
anne MP, PC, PT Page 3

Exercice 3 [Fusionnement de deux tableaux tris]:
// la variable p correspond lindice de fin du premier sous tableau tri.
Procdure tri_fusion (VAR T:TAB, N, p:entier)
Var i, j: entier
S:TAB
Dbut
i 1
j p + 1
k 1
Tant que (i p et j N) faire
Si t[i] < t[j] alors
s[k] t[i] ;
i i+1
Sinon
s[k] t[j]
j j+1
fin si
K k + 1
Fin tant que

Si (i p) alors
Pour c de i p faire
S[k] t[c]
K k + 1
Fin pour
Sinon
Pour c de j N faire
S[k] t[c]
K k + 1
Fin pour
Fin si

Pour c de 1 N faire
T[c] S[c]
Fin pour

Fin





IPEIEM 2013-2014
1
re
anne MP, PC, PT Page 4

Exercice 4 : [recherches squentiel les renvoyant un indice]
La Spcification : cest lensemble dexigences satisfaire par un produit ou un service. Si une ou
plusieurs des spcifications applicables ne sont pas satisfaites, il peut tre dsign comme tant hors
spcification.

Dans notre exercice, si l'lment recherch est prsent plusieurs fois dans le tableau, quel indice
renvoyer ? On peut renvoyer soit :
a. Premier indice : le plus petit indice
b. Dernier indice : le plus grand indice
c. Indice N p, avec p donn en paramtre
d. Tous les indices, sous la forme dun tableau dentiers

Idem si cet lment n'est pas dans le tableau ?
Renvoyer un indice qui ne figure pas parmi les indices du tableau, soit :
a. Indice de dbut -1
b. Indice de fin + 1
c. Indice x fix pralablement qui indique linexistence dlment.
Cela permet, aprs lappel cette fonction, de tester si lindice renvoy nappartient pas aux indices du
tableau, donc llment recherch nexiste pas

//Retourner le plus petit indice
Fonction rech_seq_ppi (T:TAB, N, e:entier) : entier
Var i : entier
Dbut
i 1
Tant que (i N) faire
Si T[i] = e alors
Retourner (i)
Fin si
i i+1
Fin tant que
Retourner (-1)
Fin





IPEIEM 2013-2014
1
re
anne MP, PC, PT Page 5

//Retourner le plus grand indice
Fonction rech_seq_pgi (T:TAB, N, e:entier) : entier
Var i : entier
Dbut
i N
Tant que (i 1) faire
Si T[i] = e alors
Retourner (i)
Fin si
i i-1
Fin tant que
Retourner (-1)
Fin


Exercice 5 : [Recherche dichotomique]













Pour x=11, 3 comparaisons du tableau sont effectues.
Pour x=12, 3 comparaisons du tableau sont effectues.
Pour x=10, une seule comparaison du tableau est effectue.



T = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22]
[0, 2, 4, 6, 8,]
[12, 14, 16, 18, 20, 22] [10]
x = 11
[12, 14] [18, 20, 22] [16]
[12] [] [14]
IPEIEM 2013-2014
1
re
anne MP, PC, PT Page 6

Exercice 6 : [Recherche dichotomique renvoyant un indice]
Question 1 :
Fonction Recherche_dichotomique (T : TAB, N, x : entier) : entier
Variable bas, milieu, haut : entier
Dbut
bas 1;
haut N;
Rang -1;
Rpter
milieu (bas + haut) div 2;
Si x = T [milieu] alors
retourner (milieu)
Sinon
si T[milieu] < x alors
bas milieu + 1
sinon
haut milieu-1
fin si
fin si
Jusqu (bas > haut)
Retourner (-1)
Fin

Question 2 :
Le plus petit ? Le plus grand ?
On ne peut pas estimer si la fonction va renvoyer lindice le plus petit ou le plus grand.
Car a dpend de son emplacement par rapport au milieu du tableau.