Como encontrar el segundo valor mas grande en un array




En este programa usare JavaScript para encontrar el sugundo valor mas alto en un array.

Primero declaramos una variable de nombre "arr" con el array y los valores que queramos intentar.

let arr = [ 8, 6, 4, 12, 10, 2 ];

Luego declaramos la funcion "segundoMasGrande" y pasamos el array "arr" como parametro de la siguiente manera:

let arr = [ 8, 6, 4, 12, 10, 2 ];

function segundoMasGrande(arr) {

}


Para empezar debemos declarar dos variables e inizializarlas en cero:

let arr = [ 8, 6, 4, 12, 10, 2 ];

function segundoMasGrande(arr) {
   let masGrande = 0;
   let segundoMasGrande = 0;
}


Ahora debemos comparar todos los valores en el array para saber cual es el segundo valor mas grande. Para ello tambien debemos saber cual es el valor mas grande y compararlos. Utilizamos un clico for iterar por cada valor y para comparar los valores, uno con otro utilizamos un if.

let arr = [ 8, 6, 4, 12, 10, 2 ];

function segundoMasGrande(arr) {

   let masGrande = 0;
   let segundoMasGrande = 0;

  for (let i = 0; i < arr.length; i++) {
     if (arr[i] > masGrande ) {
            masGrande = arr[i];
     }
  }
}


En el codigo de arriba, "if (arr[i] > masGrande ) {" compara si el "arr[i]" o el valor actual es mayor que el valor actual mas grande que es la variable "masGrande". Cuando el ciclo "for" compare por primera vez que el valor "8" es mas grande que "0" que seria el valor actual de la variable "masGrande" entocese el valor de la variable "masGrande" se igualaria a "8".

Cuando el ciclo "for" compare el segundo valor "6" enconces preguntara: 6 > 8, siendo el resultado falso, entoces deberiamos decir que 8 todavia es el valor mas grande pero 6 es ahora el segundo valor mas grande. Para ello creamos un else y utlizamos la variable del valor "segMasGrande".

let arr = [ 8, 6, 4, 12, 10, 2 ];

function segundoMasGrande(arr) {

   let masGrande = 0;
   let segundoMasGrande = 0;

  for (let i = 0; i < arr.length; i++) {
     if (arr[i] > masGrande ) {
            masGrande = arr[i];
     } else {

             if (arr[i] > segMasGrande) {
                segMasGrande= arr[i];
             }
         }
  }
}


Cuando el ciclo compare el tercer valor "4" entonces preguntaria: 4 > 8, (8 todavia es le valor mas grade) esto tambien seria falso, por lo cual se va al else y el if preguntaria de nuevo: 4 > 6, (6 todavia el segundo valor mas grande), esto seria falso tambien, por lo tanto los valores de ambas variables continuan igual.

Al comparar 12 > 8, esto seria verdadero, ahora el valor de la variable masGrande se iguala a 12. Pero que pasaria con el valor de 8, que ahora seria le segundo valor mas grande? Para resolver esto simplemente igualamos la variable "segMasGrande" igual a el valor que tenia la variable "masGrande".

let arr = [ 8, 6, 4, 12, 10, 2 ];

function segundoMasGrande(arr) {

   let masGrande = 0;
   let segundoMasGrande = 0;

  for (let i = 0; i < arr.length; i++) {
     if (arr[i] > masGrande ) {
            segundoMasGrande = masGrande ;
            masGrande = arr[i];
     } else {

             if (arr[i] > segMasGrande) {
                segMasGrande= arr[i];
             }
         }
    }
}




Finalmente imprimimos el valor de la variable "segMasGrande" y llamamos la funcion al final.

let arr = [ 8, 6, 4, 12, 10, 2 ];

function segundoMasGrande(arr) {

   let masGrande = 0;
   let segundoMasGrande = 0;

  for (let i = 0; i < arr.length; i++) {
     if (arr[i] > masGrande ) {
            segundoMasGrande = masGrande ;
            masGrande = arr[i];
     } else {
             if (arr[i] > segMasGrande) {
                segMasGrande= arr[i];
             }
         }
    }
    console.log(segMasGrande);
}


segundoMasGrande(arr);


El segundo valor mas grande de este array seria 10.

Publicar un comentario