Esto es equivalente a encontrar el kth elemento mínimo en una matriz sin clasificar.
Como otros señalaron, puede modificar el algoritmo de clasificación rápida para obtener la solución.
Aquí está la solución en C
intercambio nulo (int & a, int & b) { int temp = a; a = b; b = temp; } partición int (int arr [], int low, int high) { int izquierda, derecha, pivote; int r = bajo + (rand ()% (alto-bajo + 1)); swap (arr [r], arr [bajo]); pivote = arr [bajo]; izquierda = bajo; derecho = alto; while (izquierda <derecha) { while (arr [izquierda] pivote) Derecha--; si (izquierda k-1) { alto = índice-1; índice = partición (arr, bajo, alto); } más{ bajo = índice + 1; índice = partición (arr, bajo, alto); } } printf ("% d", arr [k-1]); } int main () { int arr [] = {34,1,2,89,56,23,5,6,3,100,90}; // k denota el elemento mínimo que se debe encontrar int k = 6; printf ("Encontrando los elementos mínimos% dth ...", k); selección rápida (arr, 11, k); }