配列の最大値と4番目の最大値を見つけるには、必要な最小限の比較数はどれくらいですか?私はここで見つけるのMinMaxとソリューションに類似したアルゴリズムを使用していると仮定:最大と4番目の最大要素を見つける
Find the 2nd largest element in an array with minimum number of comparisons
\をしかし、私は、私は、このシナリオにトーナメントのスタイルを適応させることになるかどうかはわかりません。配列の最大値と4番目の最大値を見つけるには、必要な最小限の比較数はどれくらいですか?私はここで見つけるのMinMaxとソリューションに類似したアルゴリズムを使用していると仮定:最大と4番目の最大要素を見つける
Find the 2nd largest element in an array with minimum number of comparisons
\をしかし、私は、私は、このシナリオにトーナメントのスタイルを適応させることになるかどうかはわかりません。興味深い質問...
私はトリックがちょうどトーナメントに2回目を実行することですが、(トーナメント#1によって決定される)セットから削除最も大きく、2番目に大きなと思います。
トーナメント#1:
トーナメント#2 [最大]及び(2)の[2番目に大きな(1)内で検索する:(1)を用いて、(2)のセットから除去されます。 (3)[最大]と(4)[第2位]を見つける。これらは元のセットから3番目と4番目に大きいものです。
[編集]:私は良好でした完全性のためにいくつかの数学を試してみてください。
(1)+(2)+(3)+(4)
=>(N - 1)+(ログN - 1)+((N - 2) - 1)+(ログ(N-2) - 1)
=> 2N +(Nログ)+(LOG(N-2)) - 6
=> 2N +(N^2ログ - 2N)を - 6