配列の2番目に高い要素を見つけるには、配列全体をソートして(バブルソート)、次にソートされた配列の2番目に高い要素を出力する方がいいですか?最も高い要素(2番目に高い要素)を再度見つけますか?2番目に高い要素
2番目に高い要素
答えて
どちらも、率直に。配列を並べ替えるのは、せいぜいO(nlog(n))の操作だけです(バブルソートを使わないでください!)。配列を2回移動することは、O(n)操作ですが、実行時間の約半分を節約できます。一度に配列を上書きし、2番目に大きな配列を格納するだけです。それによりワンパスでより効率的に完全に可能である
int secondHighest(int[] arr) {
// Assumption: There are at least two elements in the array
int highest;
int secondHighest;
if (arr[0] > arr[1]) {
highest = arr[0];
secondHighest = arr[1];
} else {
highest = arr[1];
secondHighest = arr[0];
}
for (int i = 2; i < arr.length; ++i) {
if (arr[i] >= highest) {
secondHighest = highest;
highest = arr[i];
} else if (arr[i] > secondHighest) {
secondHighest = arr[i];
}
}
return secondHighest;
}
あなたが行くにつれて、2つの最も高い要素を追跡しながら、配列を1回通過させる必要があります。
なぜそれが良いのか、それ以外の理由だけを述べることは良い考えです。 –
私は初心者がbig-Oやメモリ帯域幅ではなく、大丈夫だと仮定しました。ソートは一般にO(N log N)、バブルソートはO(N^2)であり、それを2回実行して、よりキャッシュに優しい方法です。 –
もしそうでなければ、単純にこの方法で効率を上げることができます。なぜなら、並べ替えが複数回繰り返されるうちに、配列を1回だけ/(2回)反復するからです。私は彼らが前にビッグ・オウを見たかもしれないバブル・ソートが何であるかを知っているから考えていました。 –
:
は、以下(例えばint
アレイ用のJavaで与えられるが、容易に他の言語またはデータ型に翻訳可能であるべきである)を考えます。 2つの最も高い値を探し、2つ目の値を選択します。
擬似コード
INTEGER FINDSECONDHIGHEST (ARRAY A)
INTEGER FIRST = MINIMUM_INTEGER_VALUE_POSSIBLE
INTEGER SECOND = MINIMUM_INTEGER_VALUE_POSSIBLE
FOREACH INTEGER I IN A
IF I > FIRST THEN
SECOND = FIRST
FIRST = I
ELSE IF I > SECOND THEN
SECOND = I
END IF
END FOREACH
RETURN SECOND
- 1. 2番目に高い要素を見つける
- 2. 配列の1番目と2番目の要素を取得
- 3. C++マップのN番目に高い要素を見つけよう
- 4. D3.jsとIonic 2:2番目のページビューのDOMにない要素
- 5. モーダルウィンドウに2番目の要素をフォーカスする(角度、ブートストラップUI)
- 6. 2番目の要素にクラスを割り当てるJava Script
- 7. 2番目の要素にアクセスするJava LinkedList
- 8. この要素の1番目の2番目と3番目の子要素を選択してください
- 9. 2番目と3番目と4番目の要素の背景色を変更しますか?
- 10. 2番目の配列されていない配列の中のK番目の要素
- 11. 2番目に高い値の列名と値
- 12. 同じクラスのページの2番目の要素
- 13. タプルのリストを2番目の要素でソート
- 14. 2番目の子IDで要素を取得
- 15. JQueryで前の2番目の要素を選択
- 16. は2番目の要素を無視しますか?
- 17. ドロップダウンが2番目の要素をクリックしたとき
- 18. ファイルの2番目の要素を取得する
- 19. 取得最後から2番目の要素の一覧
- 20. 最後から2番目の要素を選択
- 21. 2番目の兄弟div要素が高さを継承していません
- 22. リストから2番目に大きいNSMutableArray要素を比較します
- 23. C配列内の2番目に出現頻度の低い要素
- 24. MongoDB:mongodbの2要素のNumber配列の2番目の要素に条件を付ける方法は?
- 25. PHPで2番目と3番目に高い値と最後の項目を選択するMySQLクエリ
- 26. 豚で3番目に高い給与
- 27. 2番目の列を使用して2次元配列をソート2番目の列の要素が同じ列1番目の列で並べ替え
- 28. ヒープツリーのK番目の要素
- 29. NGリピート番目の要素の属性
- 30. グループ独自の0番目の要素
最初のオプションが良いです。 'Array.sort'を使って2番目の要素を表示してください。また、必要な情報を提供してください。 – Rajesh
最高のものを見つけたほうがいいですし、2番目に高いのが良いです。なぜなら、 'n(n)'のマージソート(または一般的に使われるクイックソート)と比較して 'O(n) 'しかないからです。 –
次の記事を参照してください。http://stackoverflow.com/questions/2615712/finding-the-second-highest-number-in-array – Rajesh