[解決済み】長さnのソートされていない配列の中でk番目に大きい要素をO(n)で見つけるにはどうすればよいですか?)
2022-04-05 13:47:41
質問
長さnのソートされていない配列の中でk番目に大きい要素をO(n)で求める方法があると思うのですが、どうでしょうか? というか、"expected" O(n)とかになっているのかもしれません。 どうやったらできるんでしょうか?
どのように解決するのか?
を見つけるといいます。
k次統計量
. 非常に簡単なランダム化アルゴリズム(
クイックセレクト
を取る)
O(n)
平均時間
O(n^2)
最悪の場合の時間、そしてかなり複雑な非ランダム化アルゴリズム(
イントロセレクト
を取る)
O(n)
最悪の場合 に情報があります。
ウィキペディア
しかし、それはあまり良いものではありません。
<ストライク
必要なものはすべて
このパワーポイントスライドは
. の基本アルゴリズムを抽出するだけで
O(n)
最悪の場合のアルゴリズム(introselect)。
Select(A,n,i):
Divide input into ⌈n/5⌉ groups of size 5.
/* Partition on median-of-medians */
medians = array of each group’s median.
pivot = Select(medians, ⌈n/5⌉, ⌈n/10⌉)
Left Array L and Right Array G = partition(A, pivot)
/* Find ith element in L, pivot, or G */
k = |L| + 1
If i = k, return pivot
If i < k, return Select(L, k-1, i)
If i > k, return Select(G, n-k, i-k)
また、Cormenらの「アルゴリズム入門」にも非常にきれいに詳しく書かれています。
関連
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み] πの値を最も早く求める方法は何ですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
-
[解決済み】2つの範囲が重なっているかどうかをテストする最も効率的な方法は何ですか?
-
[解決済み】JavaScriptの配列に含まれる最大の数を見つけるにはどうすればよいですか?
-
[解決済み】なぜMATLABは行列の乗算が速いのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] なぜベクトル化、ループよりも一般的に速いのですか?
-
[解決済み] HadoopのMapreduceジョブでJVMを再利用する。
-
[解決済み】JSFがゲッターを複数回呼び出す理由
-
[解決済み】再帰と反復のどちらを選ぶ?
-
[解決済み】なぜMATLABは行列の乗算が速いのか?
-
[解決済み] 3Dゲームってなんであんなに効率的なの?[クローズド]
-
[解決済み] SSLはどれくらいのオーバーヘッドを発生させるのですか?
-
[解決済み】2次元の点がポリゴン内にあるかどうかを判断するにはどうしたらいいですか?
-
[解決済み] memcachedはRedisに比べれば恐竜のようなもの?[クローズド]
-
[解決済み] Haskellプログラムにおけるガベージコレクションの一時停止時間の削減