
LARGO & ELMASRY  Page 3 
 
Introduction : 
En algorithmique, un algorithme de sélection est une méthode ayant pour but de trouver le k-ième 
plus petit élément d'un ensemble d'objets (étant donné un ordre et un entier k). 
La  question  de  la  sélection  est  un  problème  essentiel  en  algorithmique,  notamment  dans  la 
recherche du maximum, du minimum et de la médiane. Plusieurs algorithmes ont été proposés et 
plusieurs  contextes  ont  été  étudiés : algorithmes  en  ligne, complexité  amortie, complexité  en 
moyenne, ensemble d'objet particuliers etc. 
Le  problème  de  la  sélection  est  très  lié  aux algorithmes  de  tri :  l'un  des  algorithmes 
classiques, Quickselect, utilise d'ailleurs le même principe que l'algorithme de tri Quicksort. 
Dans ce rapport on va essayer d’implémenter 2 algorithmes le premier est un séquentiel de 
sélection, le deuxième est un algorithme parallèle de sélection. Notre programme va etre 
développer en langage C en utilisant le Dev C++. 
 
1) Sélection séquentielle : 
Principe de la méthode : 
L’algorithme consiste à trouver le k-ième plus petit élement dans une suit d’entier S avec k compris 
entre 1 et n. on pose n la dimension de S et Q une petite constante. 
La structure de l’algorithme est la suivante : 
 Si n < Q donc on sort du programme et on retourne le k-ième élement directement. Sinon on 
divise S on n/Q sous sequences de Q élement. 
 Après on détermine la médiane de chaque sous séquences. 
 On appel la fonction selection_sequentielde manière  récursive pour trouver m, la médiane 
de n/Q médianes trouvées dans l’étape précédente. 
 On va créer 3 sous séquences S1,S2 et S3 d’élements de S inférieur,  égale et supérieur de m 
respictivement. 
 Si  le  nombre  d’élements  de  S1  est  supérieure  ou  égal  à  k  alors  le  k-ième  élement  est 
nécessairement dans S1. On appel selection_sequentielde manière  récursive pour trouver 
le k-ième élement de S1. 
Sinon si le nombre d’élements de S1 + le nombre d’élement de S2 est supérieure ou égal à k, 
On retourne le k-ième élement de S1 
             Sinon  on appel  selection_sequentiel  de manière   récursive  pour trouver le        ( k  -    - 
)-ième élement de S3.