TD2 - LISIC

publicité
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
Téléchargement