UE J1MI2013 : Algorithmes et Programmes DS Terminal, Ann´ee 2012/2013
Exercice 2 : Algorithmes de rang (13 points)
Le probl`eme de la s´election consiste `a trouver dans un tableau de nombres l’´el´ement dit de rang i.
Pour cet exercice, du fait que les indices d’un tableau Tsont compris entre 0et longueur(T)-1, nous
admettrons que l’´el´ement de rang 0est le plus petit ´el´ement du tableau, et que l’´el´ement de rang
longueur(T)-1 est le plus grand.
Exemple : Soit T= [8,6,53,8,2,9,3,10], alors :
– Les ´el´ements de rang <0sont ind´efinis.
– L’´el´ement de rang 0est 2.
– L’´el´ement de rang 1est 3.
– L’´el´ement de rang 2est 6.
– L’´el´ement de rang 3est 8.
– L’´el´ement de rang 4est 8.
– L’´el´ement de rang 5est 9.
– L’´el´ement de rang 6est 10.
– L’´el´ement de rang 7est 53.
– Les ´el´ements de rang >7sont ind´efinis.
Remarque 1 : Une solution simple au probl`eme de la s´election consiste `a utiliser un algorithme
quelconque de tri, puis de retourner l’´el´ement de rang souhait´e.
Algorithme 1: Rang(T,rang)
Donn´ees : Un tableau T de nombres, et rang un entier
R´esultat : Si rang est un indice, alors T[rang] apr`es avoir tri´e T
si rang<0 OU rang≥longueur(T) alors
retourner nil;
Trier(T);
retourner T[rang];
Remarque 2 : Il est facile de se persuader qu’il n’est pas utile de trier tout le tableau pour avoir une
solution au probl`eme de la s´election. Dans cet exercice, nous allons adapter des algorithmes de tri vus
en cours afin d’obtenir des algorithmes de rang plus efficaces que le pr´ec´edent.
Dans toute la suite de l’exercice, vous pourrez utiliser la fonction classique Echange(T,i,j) qui ´echange
les valeurs du tableau Tindic´ees par iet j.
def echange (T, i , j ) :
TMP = T[ i ]
T[ i ] = T[ j ]
T[ j ] = TMP
Algorithme 2: Echange(T,i,j)
Donn´ees : Un tableau T de nombres, et
deux indices i et j
R´esultat : T[i] et T[j] ´echang´es
aux ←T[i];
T[i] ←T[j];
T[j] ←aux;
Page 3 sur 8