• Aucun résultat trouvé

Travaux Dirig´es d’Algorithmique n

N/A
N/A
Protected

Academic year: 2022

Partager "Travaux Dirig´es d’Algorithmique n"

Copied!
3
0
0

Texte intégral

(1)

Travaux Dirig´ es d’Algorithmique n

o

4

Cours d’Informatique de Deuxi`eme Ann´ee

—L2.1—

Tableaux et tris

Trier une suite d’´el´ements est une op´eration fondamentale en Informatique. Il existe plusieurs algorithmes de tri. Le but de ce TD est d’implanter en C des variantes de tris ´el´ementaires.

xExercice 1. (R´earrangement des ´el´ements d’un tableau)

Ecrire une fonction qui prend en argument un tableau d’entiers de taille´ n et qui le modifie de telle sorte que tous les entiers pairs se retrouvent avant les entiers impairs.

Par exemple, la fonction pourra modifier le tableau : 7 4 7 8 4 6 3 9 6 en

4 8 4 6 6 7 7 3 9 ou en 8 6 4 4 6 7 3 9 7

Ce qui compte avant tout c’est que les nombres pairs se trouvent tous avant les impairs.

xExercice 2. (Le drapeau tricolore)

On consid`ere un tableau t de n entiers (n > 0). On suppose que chaque ´el´ement dans tvaut0,1ou2. Le but de l’exercice est de trier le tableauten utilisant la m´ethode suivante : On d´ecompose le tableau en4 zones, la premi`ere ne contient que des0, la deuxi`eme que des 1, la quatri`eme que des2. La troisi`eme zone contient des ´el´ements non tri´es.

Trier le tableau trevient donc `a trier cette troisi`eme zone (d´elimit´ee par les indices j et

1

(2)

k). Pour cela, on parcourt s´equentiellement de gauche `a droite cette troisi`eme zone. Pour l’´el´ement courant de cette zone, trois cas se pr´esentent :

• c’est un1 : il suffit d’accroˆıtre la zone des1;

• c’est un 2: le permuter avec l’´el´ement le plus `a droite de la zone non tri´ee et accroˆıtre la zone des 2; et enfin

• c’est un 0 : le permuter avec l’´el´ement le plus `a gauche de la zone des 1, accroˆıtre la zone des 0et d´ecaler la zone des1.

Initialement les deux premi`eres zones ainsi que la quatri`eme sont vides.

1. ´Ecrire une fonction C qui trie le tableau ten utilisant l’algorithme donn´e ci-dessus.

2. Quelle est la complexit´e de cette fonction ?

xExercice 3. (Tri par distribution)

Soit T ab un tableau de n caract`eres entre A et Z. Pour trier le tableau selon l’ordre lexicographique, on utilise un tableau auxiliaire Aux d’entiers tel que Aux[i] indique le nombre de fois que le i-`eme caract`ere apparaˆıt dans le tableau T ab.

1. ´Ecrire une fonction qui cr´ee le tableau Aux`a partir du tableau T ab.

2. Le tableauAux´etant cr´e´e, l’utiliser pour trier le tableau T ab.

3. Quelle est la complexit´e de cet algorithme en temps et en espace ? 4. Peut-il ˆetre utilis´e quel que soit le type des donn´ees ?

xExercice 4. (Tri de Shell)

L’une des variantes les plus connue du tri par insertion est celle propos´ee par Donald L. Shell. Cet algorithme utilise le tri par insertion sur des sous-s´equences p´eriodiques afin d’obtenir un tri plus rapide.

L’id´ee de l’algorithme est de raffiner progressivement la position d’un ´el´ement dans le tableau tri´e en r´ealisant des pas de plus en plus petits (jusqu’`a atteindre des pas de 1). L’´etape de base de l’algorithme consid`ere que le tableau initial est compos´e de h sous tableaux dont les ´el´ements sont `a une distance de h. On va alors trier ces h tableaux en utilisant l’algorithme du tri par insertion. Cette op´eration est r´ep´et´ee pour des valeurs deh diminuant jusqu’`a la valeur 1.

Dans un premier temps, la suite des valeurs deh sera d´efinie par : hn=

1 pour n = 1

2×hn−1 pourn≥2

2

(3)

1. Donner les ´etapes n´ecessaires au tri du tableau 6 5 4 9 1 7 8 3 2

2. ´Ecrire une fonction C qui trie un tableau d’entiers en utilisant l’algorithme donn´e ci- dessus.

Il faut noter que la qualit´e du tri de Donald L. Shell d´epend fortement de la suite des valeurs deh. La suite d´efinie par :

hn=

1 pour n = 1

3×hn−1+ 1 pourn≥2

est sugg´er´ee par Donald E. Knuth, mais on peut imaginer d’autres suites pour la d´ecroissance des pas.

xExercice 5. (Tri rapide)

La m´ethode consiste `a placer un ´el´ement du tableau (appel´e pivot) `a sa place d´efinitive, en permutant tous les ´el´ements de telle sorte que tous ceux qui lui sont inf´erieurs soient `a sa gauche et que tous ceux qui lui sont sup´erieurs soient `a sa droite. Cette op´eration s’appelle le partitionnement. Pour chacun des sous-tableaux situ´es `a droite et `a gauche du pivot, on d´efinit un nouveau pivot et on r´ep`ete l’op´eration de partitionnement. Ce processus est r´ep´et´e r´ecursivement, jusqu’`a ce que l’ensemble des ´el´ements soit tri´e.

G´en´eralement, on choisit comme pivot le premier ´el´ement de la liste.

1. Trier le tableau suivant en donnant toutes les ´etapes interm´ediaires `a l’aide du tri rapide

3 5 2 0 1 4

2. ´Ecrire une fonction C qui ordonne les ´el´ements d’un tableau suivant le tri rapide.

3

Références

Documents relatifs

Le programme devra dire si l’utilisateur a trouv´ e ou pas le nombre, si l’utilisateur ne le trouve pas, le programme devra indiquer si le nombre saisi est trop grand ou trop

Le but de cet exercice est donc de rechercher s’il existe une position du point T sur le segment [EM] pour laquelle l’angle ATB est maximum et, si c’est le cas, de d´ [ eterminer

b) Combien de multiplications de nombres de moins de m chiffres sont n´ ecessaires au calcul de x.y ? En d´ eduire un algorithme de multiplication des entiers, et ´ evaluer

– La table des ´ el´ ements contient, pour chaque ´el´ement, le type (triangle `a trois nœuds, qua- drangle `a quatre nœuds,. ) et les num´eros des nœuds dans le

Hermann – Elastic shear analysis of general prismatic beams , Journal of the Engineering Mechanics Division, ASCE 91 (1968), p. Petyt – Introduction to finite element

Ce que l’on va faire ici, c’est consid´ erer la surface parall` ele ` a la fronti` ere translat´ ee d’une ´ epaisseur dξ (vers l’ext´ erieur).. h est dans un espace vectoriel

Une configuration ´electronique d’un atome dans son ´etat fondamental s’´etablit en respectant les r`egles suivantes : l’ordre de remplissage des orbitales est celui pour laquelle

Remarque : L’ordre dans lequel on choisit les entiers n’a aucune importance et deux choix du mˆ eme entier n’a aucun effet, donc il suffit de conserver les nombres de E qui ont