UNIVERSITE CADI AYYAD Facult´e PolyDisciplinaire de Safi
Fili`ere SMI 2019−2020
Structure de donn´ee avanc´ee en C (partie II)
TD N
◦1
Introduction `a la complexit´e algorithmique
Exercice 1 :
Pour chacune des fonctions suivantes, d´eterminer le temps de calcul dans le pire des cas et enO() en justifiant votre r´eponse :
1. int fonct1(int n) 2. int fonct2(int n)
{ {
int i=n/2,j,s=0; int i,j,s=n;
for(j=100;j>0;j--) for(i=1500;i>300;i-=100)
while(--i) for(j=2;j<=n-100;j*=2)
s*=2; s/=2;
return s; return s;
} }
3. int fonct3(int n) 4. int fonct4(int n)
{ {
int i,j=n,s=0; int i=0,j,s=0;
while(j) do
{ {j=i++;
for(i=1;i<n/2;i*=2) while(j<2*i)
s++; {
j--; s++;
} j+=3;
return s; }
} }while(i<n);
return s;
}
Exercice 2 :
Proposer et ´evaluer la complexit´e des fonctions permettant de r´ealiser les tˆaches suivantes : 1. calculer le pgcd de deux entiers,
2. convertir un entier en binaire (en utilisant les listes chaˆın´ees), 3. fusionner deux tableaux,
4. trier (s´election, bulle, insertion) un tableau, 5. calculer le ni`eme terme de la suite de Fibonacci, 6. effectuer la recherche dans un tableau tri´e, 7. rechercher une valeur dans une matrice, 8. donner le produit de deux matrices.
Mustapha KCHIKECH