logo de la licence professionnellelogo d'aix marseille université

Solution de quelques exercices : 

Les tours de Hanoï

#include <stdio.h>

void hanoi(int nbDisques,int depart,int milieu,int final)
{
if (nbDisques>0)
{
hanoi(nbDisques-1,depart,final,milieu);
printf("%d->%dn",depart,final);
hanoi(nbDisques-1,milieu,depart,final);
}
}

int main()
{
printf("Solution hanoi 2;n");
hanoi(2,1,2,3);
printf("Solution hanoi 3;n");
hanoi(3,1,2,3);
printf("Solution hanoi 10;n");
hanoi(10,1,2,3);
}

 

quickSort récurssif:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int nbAppelsRec=0;

void qsortRec(int * T,int indD,int indF)
{

int pf=indD,pd=indF;
int courant,temp;


if ((indF-indD)>=1)
{
courant=pf+1;
while (pf!=pd)
{
if (T[courant]>T[pf])
{
nbAppelsRec++;
temp=T[courant];
T[courant]=T[pd];
T[pd]=temp;
pd--;
}
else
{
nbAppelsRec++;
temp=T[courant];
T[courant]=T[pf];
T[pf]=temp;
pf++;
courant++;
}
}
qsortRec(T,indD,pf-1);
qsortRec(T,pd+1,indF);
}
}

 

int main()
{
int T[100000];
int i;
int nbElements=85000;

srand(time(NULL));

for (i=0;i<nbElements;i++)
T[i]=rand()%20000000;

printf("avant le tri:n");
for (i=0;i<nbElements;i++)
printf("T[%2d]:%2dn",i,T[i]);

qsortRec(T,0,nbElements);

printf("après le tri:n");
for (i=0;i<nbElements;i++)
printf("T[%2d]:%2dn",i,T[i]);

printf("nbAppelsRec:%dn",nbAppelsRec);

return 0;
}

Valid XHTML 1.0 Transitional SIL - NTI copyright 2012