Accueil ⇒ Informatique ⇒ Algorithmique ⇒ Quick Select

Quick Select

Pseudo code

Entrée

On considère qu'on a en entrée un tableau T de valeurs.

Partition

On utilise la même fonction de partitionnement que pour un tri rapide :

Partition(p, gauche, droite)
    Soit m = gauche
    Pour i allant de gauche à droite
        Si T[i] <= T[p]
            Echanger les cases i et m dans T
            Incrémenter m
    Retourner (m - 1)

Algorithme

QuickSelect(rang, gauche, droite)
    Si gauche = droite
        Retourner gauche
 
    Soit p un pivot choisi au hasard entre gauche et droite
    nbInf = Partition(p, gauche, droite)
 
    Si nbInf >= rang
        Retourner QuickSelect(rang, gauche, gauche + nbInf - 1)
    Sinon
        Retourner QuickSelect(rang - nbInf, gauche + nbInf, droite)