Pseudocódigo
Funcion entero quickSelect(entero arr[],entero izquierda,entero derecha, entero k)
D.V.
Definir part como entero
Inicio
part <- particion(arr,izquierda,derecha)
Si (part == k) entonces
Devolver arr[part]
SiNo
Si (particion < k) entonces
Devolver quickSelect(arr,part + 1,derecha,k)
FinSi
SiNo
Devolver quickSelect(arr, izquierda,part - 1,k)
FinSi
FinFuncion
Funcion entero particion(entero arr[],entero izquierda,entero derecha)
D.V.
Definir i como entero
Definir pivote como entero
Definir pivoteLoc como entero
Definir aux como entero
Definir aux2 como entero
Inicio
pivote <- arr[derecha]
pivoteLoc <- izquierda
Para i de izquierda hasta derecha con paso 1
Si (arr[i] <= pivote) entonces
aux <- arr[i]
arr[i] <- arr[pivoteLoc]
arr[pivoteLoc] <- aux
pivoteLoc <- pivoteLoc + 1
FinSi
FinPara
aux2 <- arr[derecha]
arr[derecha] <- arr[pivoteLoc]
arr[pivoteLoc] <- aux2
Devolver pivoteLoc
FinFuncion