Página 1 de 1

Algoritmia ... modificación de algoritmo

Publicado: Mar Sep 12, 2006 11:34 pm
por Roland
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.

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
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.