• Aucun résultat trouvé

Travaux Dirigés d’algorithmique n

N/A
N/A
Protected

Academic year: 2022

Partager "Travaux Dirigés d’algorithmique n"

Copied!
2
0
0

Texte intégral

(1)

Travaux Dirigés d’algorithmique n

o

4

Cours d’algorithmique

—Licence CFA / Troisième Année—

xExercice 1. (Recherches et accumulations dans les tableaux)

On dispose d’un tableaux d’entierstab de tailletaille. Écrire un algorithme pour résoudre les problèmes suivants ; donner la complexité de chaque algorithme.

1. Calculer le nombre d’entiers pairs dans le tableaux ; 2. Le tableau contient-il un entier pair ?

3. Étant donné un entieri, trouver un l’entier le plus proche deidans le tableau.

4. Le tableau est-il trié ? C’est-à-dire, l’assertion suivante est-elle vrai ? pour tout i <taille−1, on a tab[i]>tab[i+ 1].

xExercice 2. (Manipulations de base des tableaux)

On travaille sur les données suivantes : tabest tableau pour lequel on a alloué max_taille élé- ments ; Les éléments 0≤i <taille≤max_taillesont initialisés, les autres sont considérés comme inutilisés.

Écrire un algorithme pour résoudre les problèmes suivants ; donner la complexité.

1. insertion d’un élément à la fin ; 2. insertion d’un élément en positioni; 3. insertion d’un élément au début ; 4. suppression d’un élément à la fin ; 5. suppression d’un élément en positioni; 6. suppression d’un élément au début ;

xExercice 3. (Tri par bulles)

On dispose d’un tableaux d’entierstabde tailletaille. On cherche à trier le tableau. Pour ceci, on peut utiliser l’algorithme suivant : on parcourt le tableau en cherchant les positions itelles que

0≤i <taille−1 et tab[i]>tab[i+ 1].

Quand on a trouvé un tel i, on échange tab[i] et tab[i+ 1] et ensuite on continue le parcours. On recommence tant que le tableau n’est pas trié.

1. Écrire l’algorithme du tri par bulle.

2. En fait, on se rend compte que les éléments qui ne sont pas déplacés à la fin d’un parcourt, ne seront jamais plus déplacés ensuite. Modifier le tri en tenant compte ce cette remarque à l’aide d’un index qui note le dernier élément à parcourir.

3. On peut encore améliorer le tri par bulle en parcourant alternativement dans un sens et dans l’autre. Écrire l’algorithme correspondant. On utilisera deux indices, pour le premier et le dernier éléments à parcourir.

4. Pour chacune des trois versions, dire quelle est le cas le pire et la complexité dans ce cas.

1

(2)

xExercice 4. (Implantation d’une pile par tableau)

Une pile est une structure de donnée qui enregistre des informations selon le mode dernier entré premier sorti (LIFO : Last In First Out). On manipule une pile en utilisant les quatres opérations suivantes :

Création d’une nouvelle pile PileVide() : Pile Teste si la pile est vide EstVide(Pile) : Booleen

Ajout d’un élément Empiler(T,Pile) modifie la pile Suppression d’un élément Depiler(Pile) :T modifie la pile Note :Depiler(p)est valide seulement si nonEstVide(p).

1. En utilisant un tableau proposer une structure permettant de stocker une pile ; Dans un premier temps, on supposera que la taille est limitée.

2. Écrire précisément les invariants de la structure.

3. Écrire les quatres fonctions précédentes ; 4. Quelle est leur complexité.

5. Comment faire pour que la taille ne soit plus limité sans perdre en complexité.

xExercice 5. (Implantation d’une file par tableau)

Une file est une structure de donnée qui enregistre des informations selon le mode premier entré premier sorti (FIFO : First In First Out). On manipule une pile en utilisant les quatres opérations suivantes :

Création d’une nouvelle file FileVide() : File Teste si la pile est vide EstVide(File) : Booleen

Ajout d’un élément Enfiler(T,File) modifie la file Suppression d’un élément Defiler(File) :T modifie la file Note :Defiler(p)est valide seulement si nonEstVide(p).

1. Mêmes questions que pour les piles.

2

Références

Documents relatifs

On s’intéresse dans tout ce problème à une suite infinie de lancers d’une pièce équilibrée autour duquel deux joueurs J et J 0 s’affrontent. Le joueur J l’emporte si

Alors H est

Une autre façon de déployer une application web au sein du serveur Tomcat est de donner les renseignements que nous avons donnés via l'interface web, dans un fichier

Une pile représente un ensemble de données où l'on ne peut accéder qu'au dernier élément entré, qui devient donc le premier à sortir. On les appelle parfois LIFO (last in

Emplacement de la pile.- Pour ˆetre sˆ ur que le programme et la pile n’interf`erent pas, le microprocesseur i8086 a ´et´e con¸cu de telle fa¸con que le code et les

Exemple.- ´ Ecrivons un programme QBasic qui demande un entier naturel (de deux octets) et fait appel ` a un sous-programme en langage machine qui passe la valeur en

– à créer la pile comme un objet récursif (une pile est vide ou bien constituée d'un élément qui est son sommet et d'une pile) … voir question a) ci-dessous ;. – à créer

Pour chacun des patrons de programmes suivants, dire en fonction de n quel est le nombre d’opé- rations op que le programme effectue.. Justifier votre résultat par un calcul