Programa en java que encuentre el segundo numero mayor de n numeros con array


Polfed: Sugerencia: Almacenar los dos últimos números mayores en una lista.

Respuestas

Respuesta dada por: Polfed
0
Para el desarrollo de este ejercicio, primero establecemos la lógica del algoritmo.
Nota: La lógica de este algoritmo puede crearse de diversas formas, todo depende de las ideas con las que plantees el ejercicio.
# Definición
Desde una lista de números, ejemplo:
Lista: {80,5,99}
Contando desde 1, el tamaño total o longitud de esta lista sería: 3
Definimos que a partir de los 3 números dados, para buscar el segundo número mayor decimos que: La longitud del segundo numero mayor siempre será igual a la longitud - 2, ya que el primer numero mayor será obligatoriamente mayor a todos los números de la lista, es decir longitud - 1.
Longitud: Es el tamaño o la cantidad de números de la lista sin contar el numero que se esta comparando con los demás.
# Busqueda
Hacemos uso de un contador para saber el numero de veces que un numero ha sido mayor a los demás y en base a eso obtener el segundo numero mayor.
Lista: {80,5,99} longitud = 3
Longitud para segundo numero mayor
longitud2 = 
longitud  - 2
longitud2 = 1
80 > 5 - Si entonces: contador = 1
80 > 99 - No
Si longitud2 == contador
entonces
80 es el segundo mayor
Nota:
 Esta explicación es un pequeño ejemplo de como funciona el algoritmo que se presenta al final de esta definición.
# Algoritmo
int[] numeros = {10,85,8,11,0,12,70,2,};
int longitud = numeros.length-1;
int temp,mayor2 = 0,pos;
boolean estado = false;
System.out.println("=-=---=-=   NUMEROS   =-=---=-=");
System.out.println("# LISTA");
for (int i = 0; i <= longitud; i++) {
      temp = numeros[i];
      pos = 0;
      System.out.print("{"+temp+"} ");
      for (int j = 0; j <= longitud; j++) {
            if(i!=j){
                 if(temp>numeros[j]){
                       estado = (pos==(longitud-2)) ? true : false;
                       pos++;
                 }
            }
      }
      if(estado==true){ mayor2 = temp; estado =  false;}
}
System.out.println("\n# RESULTADO");
System.out.println("[2] Mayor: "+mayor2);
System.out.println("=-----------------------------=");

Adjuntos:
Preguntas similares