Algoritmia ... modificación de algoritmo
Publicado: Mar Sep 12, 2006 11:34 pm
Tengo el siguiente código para hayar el k-ésimo menor elemento de un vector, pero necesito modificarlo para que me de el k-ésimo mayor elemento.
Yo creo que es sólo cambiando la llamada recursiva poniendo:
k-menores(iz, i-1, n, k; v;)
k-menores(i+1, de, n, k; v;)
Pero no lo tengo claro, podría alguien ayudarme.
Gracias.
Código: Seleccionar todo
/* en la primera llamada iz=1 y de = n */
Algoritmo K-menores(iz, de, n, k; v; )
inicio
i = iz
j = de
x = v(Entero((iz+de)/2))
repetir
mientras (v(i)<x) hacer
i = i + 1
finmientras
mientras (v(j)>x) hacer
j = j - 1
finmientras
si i <= j entonces
aux = v(i)
v(i) = v(j)
v(j) = aux
i =i+1
j=j-1
finsi
hasta que i>j
si k = i-1 entonces /* problema resuelto */
escribir los k primeros
sino
si k < i-1 entonces
K-menores(iz, j, n, k; v;)
sino
K-menores(i, de, n, k; v;)
finsi
fin
k-menores(iz, i-1, n, k; v;)
k-menores(i+1, de, n, k; v;)
Pero no lo tengo claro, podría alguien ayudarme.
Gracias.