1`ere Ann´ee ENSEIRB option Telecom
Algorithmique et structure de donn´ees
Devoir d’entraˆınement (facultatif) `a rendre le 13 octobre.
1 Permutations
Une permutation αde Snest une suite de nnombres entiers
α=a0, a1, . . . , an−1
tous diff´erents et compris entre 0 et n−1.
On pourra consid´erer aussi αcomme une bijection de {0,1, . . . , n −1}dans lui mˆeme
et on notera ainsi ai=α(i).
1. Une descente dans une permutation est un entier itel que ai> ai+1 ´
Ecrire un
algorithme qui ´etant donn´ee une permutation repr´esent´ee par un tableau alpha
affiche le nombre de ses descentes. Par exemple si la donn´ee est le tableau
i 0 1 2 3 4 5 6 7 8
alpha[i] 725063418
l’algorithme doit afficher 4.
2. Une inversion dans une permutation est un couple i, j tel que i<jet ai> aj.
par exemple, le nombre d’inversions de la permutation donn´ee plus haut est 18.
On vous demande d’´ecrire un algorithme qui affiche le nombre d’inversions d’une
permutation repr´esent´ee par son tableau.
3. Ecrire un algorithme qui v´erifie si un tableau de taille donn´ee nrepr´esente bien une
permutation, c’est `a dire s’il contient bien tous les nombres entiers compris entre
0 et n−1. La donn´ee sera un tableau et l’algorithme devra afficher est ou n’est
pas une permutation.
4. Un cycle dans une permutation est une suite de nombres i1, i2, . . . , iptels que α(ij) =
ij+1 pour j= 1,...p−1 et α(ip) = i1. Par exemple la permutation ci-dessus a 3
cycles qui sont
(0,7,1,2,5,3)(4,6) et (8).
On vous demande d’´ecrire un algorithme qui d´etermine le nombre de cycles d’une
permutation donn´ee par un tableau. On utilisera un tableau auxiliaire vu contenant
des bool´eens tous initialis´es `a false, et tel que vu[i] est mis `a true quand on
consid`ere l’´element idans l’ensemble des cycles parcourus.
1