L2 mathématiques T.D.2 26 septembre 2016 1 Tri par sélection Exercice 1 : Coût du temps d’exécution Reprendre l’algorithme du tri par sélection et donner le coût du temps d’exécution T(N) pour le tri d’un tableau à N éléments. Vous calculerez ce coût dans le meilleur des cas, dans le pire des cas et vous donnerez la borne supérieure asymptotique ("O") dans chacun des cas. 2 Tri par fusion Exercice 2 : Nombre de comparaisons : Fusion de 2 listes 1. Combien de comparaisons entre éléments de T nécessite la fusion des tableaux : — [3, 6, 7, 9] et [4, 5, 10, 12] ? — [3, 4, 5, 6] et [7, 9, 10, 12] ? — [3, 5, 7, 10] et [4, 6, 9, 12] ? 2. Combien de comparaisons doivent être exécutées dans le pire des cas pour la fusion de 2 tableaux triés T[p...q] et T[q+1...r] ? 3. Quelle est la complexité de la fusion de 2 tableaux triés de taille respective m et n ? Exercice 3 : Complexité Donner la complexité de l’algorithme du tri fusion. Vous prendrez en compte la complexité de la "division" et vous intégrerez la complexité de la partie "fusion". 3 Tri rapide Exercice 4 : Traces de l’algorithme vu en cours Vous ferez la trace de l’algorithme vu en cours pour les tableaux : — [6, 12, 4, 10, 8, 7, 8]. — [1, 2, 3, 4, 5, 6]. — [2, 1, 4, 5, 3, 9, 8, 7, 10, 11, 6] Exercice 5 : Complexité A partir des exemples vus précédemment, vous déterminerez — le pire des cas pour l’algorithme du tri rapide, et sa complexité. — le meilleur des cas et sa complexité. 1 4 Utilisation des tris On considère la désignation d’une personne par son nom de famille et son numéro de Sécurité Sociale (S.S.). Le numéro de S.S. sera déterminé par un tableau comportant 15 entiers, chaque entier représentant (seul ou groupé à des voisins) une caractéristique de la personne : 1 sexe 1 : homme 2 : femme 9 8 année de naissance 0 2 mois de naissance 6 9 numéro du dpt 2 4 4 code de la ville 0 1 0 numéro d’enregistrement 3 1 code d’authentification Exercice 6 : Définitions Vous écrirez une structure "personne" qui représente une personne (le nom sera un tableau fixé au départ avec 50 caractères et les noms des personnes se termineront par le caractère ’@’). Exercice 7 : Nombre d’hommes ou de femmes Vous définirez un ensemble de personnes sous la forme d’un tableau de "personne". Puis vous écrirez une fonction "entier compter(tableau de personnes, sexe)" qui permet de compter le nombre de personnes d’un sexe donné (ce sera dans notre cas 1 ou 2 suivant la définition précédente). Exercice 8 : Tri du tableau de personnes Vous trierez le tableau de 1000 "personne", suivant : 1. le sexe des personnes (les femmes d’abord et les hommes ensuite) suivant l’algorithme suivant : (a) compter le nombre de femmes. On sait alors que le tableau une fois trié aura F femmes au début et 1000-F hommes à la fin. On va donc séparer le tableau en 2 parties : (0–(F-1)) qui contiendra les femmes et (F–999) qui contiendra les hommes. (b) parcourir les 2 sous-tableaux en laissant en place les "personnes" qui sont déjà "à leur place" et en échangeant les "personnes" qui ne le sont pas : si dans un sous-tableau une personne est "en place" vous passez à l’élément suivant, sinon vous l’échangez avec une personne qui n’est pas "en place" dans l’autre sous-tableau. 2. la ville dans laquelle elles sont nées (tri suivant le numéro croissant des départments et des codes des villes), à partir du tableau trié précédemment suivant le sexe. Vous ferez ce tri à l’aide du tri sélection ; 3. leur âge (du plus jeune au plus vieux), à partir du tableau trié précédemment suivant le sexe. Vous utiliserez l’algorithme du tri insertion. 2