Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

132
Vistas
Encuentra el k-ésimo elemento de una matriz

Estoy tratando de averiguar cómo funciona este código.

 function Kth_greatest_in_array(arr, k) { for (let i = 0; i < k; i++) { let max_index = i; const tmp = arr[i]; for (let j = i + 1; j < arr.length; j++) { if (arr[j] > arr[max_index]) { max_index = j; } } arr[i] = arr[max_index]; arr[max_index] = tmp; } return arr[k - 1]; } console.log(Kth_greatest_in_array([1,2,6,4,5], 3))

Como puede ver, el objetivo es encontrar el tercer mayor valor. Pero no sé cómo funciona el segundo ciclo. Me lo podrías explicar paso a paso. Por ejemplo, ¿cuál es el significado de veriable j, especialmente por qué escribieron let j = i +

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Este método básicamente realiza una clasificación en el lugar de la matriz arr (pero solo "k" veces, no una clasificación completa), luego devuelve el elemento (de la matriz ahora parcialmente ordenada) en el índice k-1 .

El bucle for interior examina la parte restante (sin ordenar) de la matriz para encontrar el índice del elemento con el valor más alto:

 if (arr[j] > arr[max_index]) { max_index = j; }

La declaración específica sobre la que estaba preguntando, let j = i + 1 , significa "declarar una nueva variable, j , y establecer su valor inicial en uno mayor que la iteración actual del bucle for externo". " j " es arbitrario y podría ser cualquier identificador válido, solo se usa a menudo por convención cuando ha anidado bucles for ya que el bucle más externo generalmente usa i (que presumiblemente es la abreviatura de "índice").

Al final de cada iteración del bucle for externo, estas líneas intercambian elementos de matriz para que este elemento esté en la posición correcta:

 arr[i] = arr[max_index]; arr[max_index] = tmp;

Si tiene curiosidad por comprender realmente el funcionamiento interno de un método como este, le recomiendo que lo revise con un depurador; puede ser una gran experiencia de aprendizaje. Incluso el método probado y verdadero de rociar algunas declaraciones temporales de console.log puede ayudar a iluminar lo que está sucediendo (por ejemplo, imprimir el estado de arr y max_index después de cada iteración de bucle externo e interno).

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda