Examen Session 1
Janvier 2012
Listes chanes
Pour crire vos algorithmes sur les listes, vous pouvez utiliser les oprations sur les listes vues en cours, ainsi
que l'opration dernier vue en TD renvoyant l'adresse du dernier lment d'une liste non vide.
(2 points) crivez un algorithme dplaant le dernier lment d'une liste en premire position. Vous
devez raliser cette opration en modiant le chanage de la liste. Donnez la complexit de votre algorithme en
fonction de n la taille de la liste.
Algorithme 1 : deplacerDernierElem(dr L : ListeSC)
Donnes : L est une liste simplement chane contenant au moins 2 lments.
Rsultat : Modie la liste L en dplaant le dernier lment de L en premire position. Aucun lment de L
ne doit tre dupliqu. Cet algorithme ne renvoie aucune valeur.
Question 1.
(2 points) Vous devez crire 2 algorithmes entrelaant les lments de 2 listes L1 et L2 de mme
longueur : le rsultat est la liste dont le 1er lment est le 1er lment de L1, le 2e`me lment est le 1er lment de
L2, le 3e`me lment est le 2e`me lment de L1, le 4e`me lment est le 2e`me lment de L2, . . ., ainsi de suite jusqu'aux
derniers lments de L1 et L2. La gure ci-dessous illustre cette opration :
Question 2.
L1
2
5
L2
Le premier algorithme que vous devez crire doit tre rcursif . Son rsultat est une nouvelle liste obtenue en
les lments de L1 et ceux de L2. Quelle est la complexit de ce premier algorithme, exprime en
fonction de n la taille de chaque liste L1 et L2 ?
dupliquant
Algorithme 2
Donnes
Rsultat
(3 points) Le deuxime algorithme d'entrelacement opre en modiant les chanages des listes. Aucun
lment ne doit tre dupliqu. Cet algorithme peut tre rcursif ou non. Donnez l'algorithme et sa complexit.
Question 3.
Algorithme 3
Arbres Binaires
Question 4.
non vide.
Question 5.
(2
points)
(2
points)
crivez un algorithme calculant la plus petite valeur d'un Arbre Binaire de Recherche
Algorithme 4
Donnes
Rsultat
20
20
14
18
11
10
14
22
8
15
30
25
40
22
18
30
Examen Session 1
Janvier 2012
Tableaux
3.1
Il s'agit de calculer la plus petite dirence entre les valeurs de 2 lments distincts d'un tableau d'entiers. Plus
prcisment cette valeur pour un tableau T [1..n] est M in{ | T [i] T [j] | : i [1..n], j [1..n] et i 6= j}.
Exemple : le plus petit cart pour le tableau 1 7 4 11 9 est 2, dirence atteinte pour les valeurs 7 et
9 (ou 9 et 11). Pour le tableau 1 7 3 9 1 2 le plus petit cart est 0, dirence entre les valeurs 1 et 1.
Question 6.
(1,5
point)
crivez un algorithme calculant le petit cart d'un tableau tri. Quelle est sa complexit ?
(2 points) Donnez prsent un algorithme pour un tableau non tri. Vous ne devez pas trier le
tableau pour calculer le plus petit cart. Quelle est sa complexit ?
Question 7.
(0,5 point) Est-il intressant d'un point de vue complexit de trier le tableau pour calculer le plus
petit cart d'un tableau non tri ? Justiez votre rponse.
Question 8.
3.2
Rservation de salle
L'tat des rservations d'une salle est reprsent par un tableau R[1..n] de boolens o les indices sont les
numros de jours et la valeur R[i] (i [1..n]) est Faux si la salle est libre le jour i et Vrai si elle est rserve.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
F
V F F F F V V F F
F
V
F
F
F
V
Exemple : le tableau de rservations
signie que la salle est rserve les jours 2, 7, 8, 12 et 16. Les autres jours la salle est libre.
Il s'agit de rpondre une demande de rservation de j jours conscutifs.
Par exemple avec le tableau de rservations de l'exemple prcdent, une demande de rservation de 5 jours
conscutifs ne pourra pas tre satisfaite. Une demande de rservation de 3 jours conscutifs pourra tre satisfaite
de plusieurs faons : la date de dbut de la rservation pourrait tre :
le jour 3 (les jours rservs seraient les jours 3, 4 et 5)
ou bien le jour 4 (les jours rservs seraient les jours 4, 5 et 6)
ou bien le jour 9 (les jours rservs seraient les jours 9, 10 et 11).
ou bien le jour 13 (les jours rservs seraient les jours 13, 14 et 15).
Plusieurs stratgies de rservation peuvent tre appliques.
Question 9.
(2
points)
Algorithme 5
Donnes
Rsultat
Par exemple en reprenant l'exemple cidessus de tableau de rservations, pour la donne j = 6 l'algorithme
renvoie -1, pour la donne j = 2 l'algorithme renvoie 3 et pour la donne j = 1 l'algorithme renvoie 1.
crivez l'algorithme et donnez sa complexit en fonction de n et de j .
(4 points) La seconde stratgie pour une rservation de j jours conscutifs choisit le plus petit
emplacement de taille au moins n. Si plusieurs possibilits existent on choisit le premier emplacement. Par exemple
avec cette stratgie une demande de rservation de 3 jours sera place au premier emplacement de 3 jours, celui
commenant la date 9.
Question 10.
Algorithme 6
Donnes
Rsultat
En reprenant l'exemple cidessus, pour la donne j = 6 l'algorithme renvoie -1, pour la donne j = 4 l'algorithme
renvoie 3 et pour la donne j = 2 l'algorithme renvoie 9.
crivez l'algorithme et donnez sa complexit en fonction de n et de j .