Vous êtes sur la page 1sur 2

Dpartement Mathmatiques, Physique & Informatique

Facult Polydisciplinaire de Taza


Universit Sidi Mohamed Ben Abdallah de Fs

Examen d'algorithmes Structure de donnes


Session normale
Dure: 3 heures
Le 14 Juin 2013

N.B: Dans tous les exercices, on suppose que les donnes traiter sont des valeurs entires.

Exercice 1: Tri Shell (6 points)

Le tri de Shell est une amlioration du tri par insertion en observant deux choses :

Le tri par insertion est efficace si la liste est peu prs trie (1)
Le tri par insertion est inefficace en moyenne car il ne dplace les valeurs que d'une position
par instruction (2)

Le tri de Shell trie chaque liste d'lments spars de k position (k=N/2 au dpart, N nombre total
des lments du tableau) chacun avec le tri par insertion. L'algorithme effectue plusieurs fois cette
opration sur les lments spars de k=k/2 positions jusqu' ce que k=1 ce qui est quivaut trier
tous les lments ensemble.
Le fait de commencer avec des lments espacs permet de pallier l'inconvnient (2), tandis que
lorsque l'on tri la fin avec un espacement de 1 (tri par insertion ordinaire), on tire parti de
l'avantage (1).

1. Rappeler le principe du tri par insertion dans l'ordre croissant puis donner son algorithme
2. crire la fonction tri_Shell() qui permet de trier selon le principe du tri Shell un tableau T
de N valeurs dans l'ordre croissant puis l'ex cuter la main sur le tableau suivant:
5 6 1 4 0 7 3 2

3. Calculer la complexit du tri Shell dans le pire et le meilleur des cas

Exercice 2: Lises doublement chaines (8 points)

Les listes doublement chaines sont des structures de donnes pour lesquelles chaque chainon un
pointeur suivant qui pointe vers le chainon suivant et un pointeur precedent qui pointe vers le
chainon prcdent

NULL * 4 * * 2 * * 1 * * 0 * NULL

L
1. Donner la dfinition d'une liste doublement chaine
2. Raliser les fonctions de gestion des listes doublement chaines suivantes:
a. Ajouter_entte() qui ajoute une valeur la fin d'une liste pass comme paramtre
b. Afficher() qui affiche les valeurs dune liste passe comme paramtre

Tournez la page
c. Rechercher() qui recherche une valeur dans une liste et retourne un pointeur sur la premire
occurrence de cette valeur
d. Supprimer() qui supprime une valeur de la liste, la liste et la valeur sont passes comme
paramtres
e. Inserer() qui insre un chanon dans la liste, le pointeur sur le chanon et la liste sont passs
comme paramtres
f. Trier() qui trie une liste en utilisant un tri par insertion
g. Eclater() qui reoit une liste et lclate en deux sous listes, une renferme les valeurs positives
et lautre les valeurs ngatives

Exercice 3 : Arbres binaires de recherche (6 points)

Rappel: Un arbre binaire de recherche (ABR) est un arbre binaire dans lequel chaque nud possde
une cl, telle que chaque nud du sous-arbre gauche ait une cl infrieure celle du nud
considr, et que chaque nud du sous-arbre droit possde une cl suprieure celle-ci.

1. Dessinez les arbres binaires de recherche de hauteur 2,3,4 et 5 pour le mme ensemble de cls
S= 1,4,5,10,16,17,21. Donner pour chaque arbre l'affichage prfixe, infixe et postfixe.
2. Crer une fonction Minimum() qui retourne la plus petite valeur d'un arbre binaire de recherche.
3. Crer une fonction Fusionner() qui permet de fusionner deux arbres binaires de recherche A et B
donns. Une cl (valeur) qui apparat dans les deux arbres ne doit pas tre duplique.

Bon courage