Vous êtes sur la page 1sur 7

Université Hassan II Année universitaire : 2014/2015

Faculté des Sciences Ain Chock


Casablanca
Algorithme II
SMI-3

Exercice 1: Complexité 4pts


Calculer la complexité dans chaque programme:

a) Boucle I : b) Boucle II :
Pour (int i = 0; i < N; ++i) Pour (int i = 0; i <= N; i += 2)
Pour (int j = 1; j <= N; j*= 2) Pour (int j = i; j > 0; --j)
Écrire ("Boucle 2"); Écrire ("x");

c) Fonction récursive I : d) Fonction récursive II:


Un algorithme résout le problème en le
T(n)=T(n-1)+2T(n-2).
divisant en 4 sous-problèmes de taille n/2,
en résolvant ces quatre sous problèmes
T(0)=0 et T(1)=1.
récursivement, puis en combinant les
solutions en temps quadratique.
a)

b)
C)
Donc la complexité est O(2N) exponentielle on néglige r2= -1

d)

a=4
b=2
d=2
d=log24 donc T(n)= O(nd logn)= O(n2logn)
Exercice 2 : Algorithme de Tri 6pts
1. Écrire un sous-algorithme permettant de remplir une table de dimension N
avec les caractères ‘X’ et ‘O’ de la manière suivante :

X O X O X O X O X O X O X O X O X O

Table A

1. Algo de remplissage
Algorithme remplissage (T [] : tableau de caractère par réf, N : entier)
Var i : entier
Début
Pour i allant de 0 jusqu'à N-1
si (i%2=0)
Ecrire (‘X’)
Sinon
Ecrire (‘O’)
FinSI
FinPour
Fin

2. Écrire un algorithme de tri itératif qui permet de transforme la table B à la


table A (on suppose que le nombre de X et O sont égaux).

O O X X X O O O X O X X X O O O X X
Table B

Algorithme Trie ( T[] : tableau de caractère par réf, N : entier)


Var i,j : entier
Début
Pour i allant de 0 jusqu'à N-1avec un pas 2
j←i+1
Tant que (T[j] != ‘X’)
j←j+2
FinTantQue
Petmutation ([Ti] ,T[j])
FinPour
Fin
3. Calculer la complexité de l’algorithme. N2
Exercice 3: Algorithme Diviser-Régner 10pts
On dispose de la table suivante on veut implémenter un Tri rapide (quick Sort) spécial.

10 4 0 3 2 6 10 8 5 6 3 0 2 5 1 1 4 8

La fonction Partitionner permet de découper les tables en trois parties :


 Partie I : Les éléments inférieurs au Pivot (T[i] <Pivot)
 Partie II : Les éléments égaux au Pivot (T[i] Pivot)
 Partie III : Les éléments supérieurs au Pivot (T[i]>Pivot)
1. Donner une simulation de Tri sur la table.
La table sera divisée en 3 parties et on travaille seulement sur les deux parties inférieur au
pivot et supérieur au pivot.

2. Écrire l’algorithme principal de tri récursif. :

3. Écrire le sous algorithme Partitionner avec ses arguments.


4. La complexité de l’algorithme est sous la forme T(n) =aT(n/b) + f(n).
Déterminer a, b et f(n) et calculer T(n).

a= 2
b= 3
f(n)= n et donc d=1

Donc log32 = 0.63092975357 <d=1 donc


T(n)= 0(n)

5. Proposer une solution itérative pour dé- récursiver de la solution. Voir Correction de
devoir
Rappels :

Vous aimerez peut-être aussi