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.