TP7 - Les tris

Calculer le temps d’exécution des algorithmes

Durée : 3h

Objectifs :

  • Réaliser les algorithmes de tris étudiés en cours
  • Coder avec des fichiers séparés
  • Utiliser des Tableaux dynamiques
  • Calculer le temps d’exécution des différents algorithmes (lents et rapides)

Attention :

À chaque étape de programmation, vous devez vérifier si le programme :

  • Compile sans warning
  • Obtient les résultats attendus
  • Avant de coder, il faut écrire un algo avec un papier et un stylo !

    logo

0- Objectifs

1- Reprendre l’arborescence créée au TD précédent et rajouter les deux fichiers suivants :

  • trisRapides.h
  • trisRapides.c

2- Créer un nouveau main !

  • Attention un programme ne peut contenir qu’une seule fonction main !!
  • Il ne faut donc pas réutiliser le main créé dans le td4.
  • Par contre, on réutilise :
    • fonctions.h
    • fonctions.c
    • trisLents.h
    • trisLents.c

main.c

#include <stdio.h>
#include "fonctions.h"
#include "trisLents.h"
#include "trisRapides.h"

int main(){
    printf("C'est le TP7 !");
    return 0;
}

3- Coder les tris suivants :

  • La compilation doit être séparée
    • le corps de la fonction est dans le fichier trisRapides.c
    • la signature de la fonction dans fichier trisRapides.h
    • l’appel de la fonction dans le fichier main.c
  • Attention :
    • Certains tris nécessitent la création de procédures/fonctions !
    • n’oubliez pas de sauvegarder une copie du tableau créé aléatoirement
    • d’appliquez le tri à la copie du tableau, afin de pouvoir le réutiliser pour les autres tris
/* Auteur : ... */
/* Date :   ... */
/* Résumé : ... */
/* Entrée(s) : ... */
/* Sortie(s) :  ...  */
void triRapide(int* monTab, int pas, int taille);
/* Auteur : ... */
/* Date :   ... */
/* Résumé : ... */
/* Entrée(s) : ... */
/* Sortie(s) :  ...  */
void triFusion(int* monTab, int pas, int taille);

4- Calculer le temps d’exécution pour chacun des tris.

Pour cela, vous pouvez vous aider de CLOCK.

clock_t t1,t2;
float temps_total;
t1=clock();
maSuperFonction(parametre1,parametre2);
t2=clock();
temps_total= (float)(t2-t1)/CLOCKS_PER_SEC;
printf("ma Super Fonction a mis %f de secondes à s'executer \n",temps_total);

5- (Bonus)

logo

  1. Créer un makefile permettant de compiler le tout
  2. Ajouter au programme la possibilité de rajouter un argument à l’éxécution avec la taille du Tableau
  3. Créer un menu interactif permettant à l’utilisateur de choisir un tri en particuliers