Sunteți pe pagina 1din 2

Ecole Hassania des Travaux Publics M.K.

GUENNOUN

1res Annes, GI-SIG

TPs Algorithmique Avance Complexit et temps d excution

Prambule : le compilateur tcc


Pour ce TP, vous pouvez utiliser n importe quel compilateur C. Vous avez votre disposition tcc un compilateur lger et open source. Afin de pouvoir l utiliser partir d un invite de commande MS-DOS. 1- Recopier son code compress dans un rpertoire donn. Appelons-le tinyC_Compiler 2- Dcompresser son code 3- Dans vos variables d environnement, placer le rpertoire tcc dans la variable PATH a. set path=%path% ; .\TinyC_Compiler\tcc-0.9.24-win32-bin\tcc 4- Pour compiler un fichier code source du langage C, f1.c, et gnrer le code excutable dans un fichier f1.o, taper la commande a. tcc o f1.o f1.c 5- Pour excuter le code excutable, taper tout simplement a. f1.o

Tri par selection Versus Tri par fusion


1. Ecrire un programme C dont la fonction main permet de gnrer alatoirement les lments d un tableau. Le programme : a. demande dans un premier temps la taille du tableau b. rserve la zone mmoire correspondant cette taille (fonction malloc) c. Il gnrera de manire alatoire les lments du tableau i. Utiliser les fonctions srand et rand de la bibliothque stdlib 1. Initialiser le gnrateur alatoire par l instruction : srand(time(NULL)) 2. Pour gnrer un entier alatoirement, utiliser l instruction rand() 2. Ecrire une fonction afficher qui prend en paramtre ce tableau ainsi que sa taille pour afficher son contenu a. Signature : void afficher(int * tab, int taille)

3. Tester le programme en gnrant un tableau avec une taille saisie par l utilisateur et en affichant son contenu 4. Ecrire une fonction triParSelection qui prend en paramtre un tableau d entiers ainsi que sa taille et retourne un tableau de la mme taille avec ses lments tris du plus petit au plus grand a. Signature : int * triParSelection(int * tab, int taille) 5. Tester le programme en gnrant un tableau puis en l affichant avant tri puis en affichant le tableau rsultant de l appel de la fonction triParSelection 6. On souhaite actuellement comptabiliser le temps ncessaire pour effectuer le tri. Nous allons pour cela utiliser la fonction clock() de la librairie time.h. Placer un appel avant et aprs l appel la fonction triParSelection et puis afficher le temps calcul. a. La fonction clock renvoie le temps CPU en micro secondes. b. Utiliser le type double pour plus de prcision 7. Introduire maintenant les fonctions relatives au tri par fusion. La fonction triParFusion prend en paramtre le tableau trier ainsi que sa taille et renvoie un tableau contenant les lments de ce tableau dans l ordre croissant. a. void fusionner(int * tab, int p, int q, int r) b. void tri-fusion(int * tab, int p, int r) c. int * triParFusion(int * tab, int taille) 8. En squence de l appel la fonction triParSelection, introduire un appel la fonction triParFusion. a. Vrifier que les deux algorithmes renvoient le mme rsultat (utiliser des tableaux de petites tailles) b. Afficher les temps d excution pour les deux algorithmes. Utiliser des tailles assez grandes (de l ordre de 100 000) et conclure.

S-ar putea să vă placă și