Tarefa
N números são fornecidos. Encontre o segundo maior elemento em uma sequência.
Este problema permite duas interpretações.
Por exemplo, se recebermos um conjunto de números:
\(10\ 15\ 20\ 35\ 14\ 35\ 10\), qual deve ser a resposta ?
Sob o "segundo maior elemento" ou simplesmente "segundo máximo", pode ser entendido como:
1) o valor que estaria na penúltima casa se dispuséssemos (ordenássemos) todos os valores em ordem não decrescente (cada próximo é maior ou igual ao anterior). Então para o conjunto de números considerado a resposta será o valor 35;
2) o valor do elemento, que é maior que apenas o máximo. Então a resposta é 20.
Se houver apenas um elemento máximo no conjunto de números (todos os outros são menores), ambas as interpretações são iguais e a resposta será a mesma para os dois casos, caso contrário, a resposta será diferente.
Considere o primeiro caso (vamos escrever o algoritmo em
pseudocódigo).
Para encontrar a resposta, usaremos duas variáveis:
1)
maximum1
- valor máximo (primeiro máximo);
2)
maximum2
- segundo máximo (nossa resposta).
Se o intervalo de alteração de valores for conhecido, então, como valores iniciais, tomamos um número obviamente menor que o limite inferior do intervalo (por exemplo, com um intervalo de
-1000
para
1000
- pegue o número
-1001)
Se o intervalo de valores for desconhecido, você pode escrever os dois primeiros números de entrada nos valores iniciais das variáveis max1
e max2
e depois compará-los duas variáveis.
input N //número de números
entrada a, b
máx1 = um
max2 = b
se b > um, então
max1 = b
máx2 = um
A seguir, consideramos todos os outros elementos (os 2 primeiros já foram visualizados, portanto, começaremos pelo 3º)
nc para i de 3 a n
insira um
se um > maximum1 //houve um valor maior que maximum1
Que
max2 = max1 //o antigo primeiro máximo torna-se o segundo
max1 = a //o novo elemento será o primeiro máximo
de outra forma
//próximo elemento não mais que max1
// precisa ser comparado com o valor maximum2
se um > máximo 2
Que
max2 = a //toma como o novo valor max2
// max1 não muda neste caso
Todos
Todos
kts
Tente implementar esse algoritmo você mesmo.