タスク
N 個の数値が与えられます。シーケンス内で 2 番目に大きい要素を見つけます。
この問題では2つの解釈が可能
 です。
たとえば、一連の数値 
\(10\ 15\ 20\ 35\ 14\ 35\ 10\) が与えられた場合、答えは何になりますか? ?
「2 番目に大きい要素」の下にまたは単に「2 番目の最大値」は次のように理解できます。
1)すべての値を非降順で並べた(ソートした)場合に最後から2番目の位置にある値(次の値はそれぞれ前の値以上になります)。次に、考慮された一連の数値の答えは値 35 になります。
2) 最大値よりも大きい要素の値。すると答えは20になります
 。
数値の集合の中に最大の要素が 1 つだけある場合 (他はすべて小さい)、どちらの解釈も同じで、どちらの場合でも答えは同じになります。それ以外の場合、答えは異なります。
最初のケースを考えてみましょう (アルゴリズムは 
疑似コード)。
答えを見つけるために、次の 2 つの変数を使用します。
1) 
maximum1  - 最大値 (最初の最大値);
2) 
maximum2  - 2 番目の最大値 (私たちの答え)。
値の変化の範囲がわかっている場合は、範囲の下限より明らかに小さい数値を初期値として採用します (たとえば、
-1000 の範囲) 
  から 
 1000  - 数字を入力します
 -1001)
値の範囲が不明な場合は、最初の 2 つの入力数値を変数 
max1  と 
max2 の初期値に書き込み、これらを比較できます。 2 つの変数。
<プレ>
input N //数値の数
a、bを入力
max1 = a
max2 = b
b > の場合ああ、それでは
    max1 = b
    max2 = a
プレ>
次に、他のすべての要素を検討します (最初の 2 つはすでに表示されているため、3 番目から始めます)。
<プレ>
nc for i 3 から n
    を入力してください
    >の場合Maximum1 //maximum1 より大きい値がありました
      それか
        max2 = max1 //前の最初の高値が 2 番目の高値になります
        max1 = a //新しい要素が最初の最大値になります
      さもないと
        // 次の要素は max1 を超えないようにします
        // max2 の値と比較する必要があります
        >の場合最大2
          それか
            max2 = a //それを新しい値として受け取ります max2
                           // この場合、max1 は変更されません
        全て
    全て
kts
このアルゴリズムを自分で実装してみてください。