TP2 : Tableaux et structures – Le tri à bulle
Lisez d'abord le fichier : CoursLesTypesStructures.pdf
Le principe
Le tri à bulle est un algorithme de tri qui fonctionne de la manière suivante : en partant du premier élément du
tableau, on compare les éléments deux à deux et si nécessaire, on inverse ces éléments de manière à ce que le plus
petit passe avant. Un petit exemple pour illustrer cela :
Position initiale Inversion 2 et 5 Inversion 5 et 0
Pas d'inversion Inversion 6 et 3 Inversion 6 et 4
On constate qu'à la fin de cette première passe, l'élément "le plus lourd s'est retrouvé au fond". On aurait peut-être
mieux fait d'appeler ça la méthode du tri à plomb.
Toujours est-il qu'il n'y a plus qu'à recommencer autant de fois qu'il est nécessaire pour que le tableau soit trié, étant
entendu qu'à la fin de chaque passe, un élément de plus se trouve rangé, à la fin du tableau.
Travail demandé
Utilisation d'un tableau
Vous ferez un algorithme, puis un programme permettant dans un premier temps de remplir aléatoirement un
tableau de 10 valeurs comprises entre 0 et 20, puis de l'afficher. Vous trouverez ci-dessous les renseignements
concernant le générateur aléatoire.
Dans un second temps, votre programme devra le trier et afficher le tableau trié.
Vous réfléchirez enfin à l'optimisation qui permettra de ne pas faire de tests inutiles (sur de valeurs déjà triées).
Le générateur aléatoire :
La commande est rand() renvoie un nombre entier compris entre 0 et un nombre rand_max qui est supérieur à
32767. Pour obtenir un nombre compris entre 0 et 100, il vous faudra jongler avec l'opérateur % sachant que : A % B
renvoie le reste de la division entière de A par B (notion de modulo). Le reste d'une division par 10 est évidemment
un nombre compris entre 0 et 9. Qu'on se le dise !!!
Il faudra avant initialiser le générateur aléatoire avec la séquence suivante :
srand (time (NULL));
où time appartient à une librairie qui s'appelle time.h et qu'il faut inclure par : # Include <time.h>
Utilisation d'une structure
On considère un tableau de 10 clients où chaque client est caractérisé par son numéro de client (qui ne sera pas
forcément son indice mais un nombre compris entre 0 et 100 (que vous génèrerez de manière aléatoire) et son nom
(on pourrait évidemment ajouter d'autres champs).