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