Tarea
Se dan N números. Encuentra el segundo elemento más grande en una secuencia.
Este problema admite dos interpretaciones.
Por ejemplo, si nos dan un conjunto de números:
\(10\ 15\ 20\ 35\ 14\ 35\ 10\), ¿cuál debería ser la respuesta? ?
Bajo el "segundo elemento más grande" o simplemente "segundo máximo", puede entenderse como:
1) el valor que estaría en el penúltimo lugar si ordenáramos (ordenamos) todos los valores en orden no decreciente (cada uno siguiente es mayor o igual que el anterior). Entonces para el conjunto de números considerado la respuesta será el valor 35;
2) el valor del elemento, que es mayor que solo el máximo. Entonces la respuesta es 20.
Si solo hay un elemento máximo en el conjunto de números (todos los demás son menores), entonces ambas interpretaciones son iguales y la respuesta será la misma para ambos casos; de lo contrario, la respuesta será diferente.
Considere el primer caso (escribiremos el algoritmo en
pseudocódigo).
Para encontrar la respuesta, utilizaremos dos variables:
1)
maximum1
- valor máximo (primer máximo);
2)
maximum2
- segundo máximo (nuestra respuesta).
Si se conoce el cambio de rango de valores, entonces como valores iniciales tomamos un número que es obviamente menor que el límite inferior del rango (por ejemplo, con un rango de
-1000
a
1000
- tomar el número
-1001)
Si se desconoce el rango de valores, puede escribir los dos primeros números de entrada en los valores iniciales de las variables max1
y max2
, y luego compararlos dos variables
entrada N //número de números
entrada a, b
máx1 = un
máx2 = b
si b > una, entonces
máx1 = b
máx2 = un
A continuación, consideramos todos los demás elementos (los 2 primeros ya se han visto, por lo que comenzaremos desde el 3)
nc para i de 3 a n
ingrese un
si un > maximo1 //hubo un valor mayor que maximo1
Eso
max2 = max1 //el primer máximo anterior se convierte en el segundo
max1 = a //el nuevo elemento será el primer máximo
de lo contrario
//siguiente elemento no mas que max1
// necesita ser comparado con el valor maximo2
si un > máximo 2
Eso
max2 = a //tomarlo como el nuevo valor max2
// max1 no cambia en este caso
Todo
Todo
nudos
Intente implementar este algoritmo usted mismo.