タグ付けされた質問 「big-o」

Big-O表記は、漸近的な上限を表すために使用されます。アルゴリズムの関連する時間または空間の複雑さについて説明します。Big-O分析は、問題の難易度の大まかな簡略化された見積もりを提供します。

5
2 ^ nとn * 2 ^ nは同じ時間の複雑さですか?
時間の複雑さについて私が見つけたリソースは、特に非多項式の例で、時間の複雑さの方程式の項を無視してもよいかについては不明です。 n 2 + n + 1の形式が与えられた場合、最後の2つの項は重要ではないことは明らかです。 具体的には、2つの分類2 nとn *(2 n)が与えられた場合、2 番目の分類は最初の分類と同じ順序ですか?追加のn乗算は重要ですか?通常、リソースは、x nが指数関数であり、はるかに速く成長するというだけです...次に進みます。 2 nがnを大幅に上回らないので、なぜそうならないのか理解できますが、2つを加算していないため、2つの方程式を比較するときに非常に重要です。実際、それらの差は常にnの因数となります。控えめに言っても重要なようです。

26
Bogosort(別名Monkey Sort)よりも悪いソートアルゴリズムはありますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 この質問を改善する 今朝、同僚が大学時代に振り返って、ソートアルゴリズムについて話し合いました。StupidSortのようなお気に入りについて思い出しましたが、私たちの1人は、このような並べ替えアルゴリズムを見たことがあると確信していましたO(n!)。そのため、見つけた「最悪の」ソートアルゴリズムを探し始めました。 完全にランダムな並べ替えはかなり悪いと仮定しました(つまり、要素をランダム化します- 順序付けですか?いいえ?もう一度ランダム化します)。。 Monkey Sortは、最悪の場合のパフォーマンスO(∞)、最良の場合のパフォーマンスO(n)、および平均のパフォーマンスがであるようO(n·n!)です。 最悪の平均並べ替えパフォーマンスを備えた、現在公式に受け入れられている並べ替えアルゴリズムは何O(n·n!)ですか?
178 algorithm  sorting  big-o 

30
O(nlogn)アルゴリズム-バイナリ文字列内で等間隔に配置された3つのものを見つける
昨日、アルゴリズムのテストでこの質問がありましたが、答えがわかりません。約40ポイントの価値があったので、それは私を完全に夢中にさせています。過去24時間以内に解決策を考え出していないため、クラスのほとんどが正しく解決しなかったと思います。 長さnの任意のバイナリ文字列が与えられた場合、文字列内に等間隔に配置された3つの文字列が存在する場合、それらを見つけます。これをO(n * log(n))時間で解決するアルゴリズムを記述します。 したがって、次のような文字列には「等間隔」の3つの文字列があります:11100000、0100100100 編集:これは乱数なので、任意の数で機能するはずです。私が挙げた例は、「等間隔」プロパティを説明するためのものです。したがって、1001011は有効な数値です。1、4、7は等間隔です。
173 algorithm  big-o 

4
Java Collections Framework実装のBig-Oサマリー?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 3年前休業。 この質問を改善する まもなく「Javaクラッシュコース」を教えるかもしれません。オーディエンスメンバーがBig-O表記を知っていると想定するのはおそらく安全ですが、さまざまなコレクション実装でのさまざまな操作の順序が何であるかを知っていると想定するのはおそらく安全ではありません。 私は時間をかけて自分で要約行列を生成することもできますが、それがパブリックドメインのどこかにすでに存在している場合は、それを再利用したいと思います(もちろん、適切なクレジットを使用します)。 誰かが何かポインタがありますか?
164 java  collections  big-o 

30
2つのソートされた配列をソートされた配列にマージする方法は?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 この質問を改善する これはインタビューで私に尋ねられました、そしてこれは私が提供した解決策です: public static int[] merge(int[] a, int[] b) { int[] answer = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) { if (a[i] < b[j]) { answer[k] = a[i]; i++; } else …

3
標準コンテナの複雑さの保証は何ですか?
どうやら;-)標準コンテナは何らかの形の保証を提供します。 どのタイプの保証があり、正確には、異なるタイプのコンテナの違いは何ですか? SGIページからの作業(STLについて)私はこれを思いつきました: Container Types: ================ Container: Forward Container Reverse Container Random Access Container Sequence Front Insert Sequence Back Insert Sequence Associative Container Simple Associative Container Pair Associative Container Sorted Associative Container Multiple Associative Container Container Types mapped to Standard Containers ============================================= std::vector: Sequence Back Sequence Forward/Reverse/Random Container std::deque: Sequence …
160 c++  stl  containers  big-o 

15
Javaハッシュマップは本当にO(1)ですか?
JavaハッシュマップとそのO(1)ルックアップ時間についての興味深い主張を見てきました。これがなぜそうであるか誰かが説明できますか?これらのハッシュマップが、購入したハッシュアルゴリズムと大きく異なる場合を除き、衝突を含むデータセットが常に存在している必要があります。 その場合、ルックアップはでO(n)はなくになりO(1)ます。 誰かがそれらが O(1)であるかどうかを説明できますか?

16
「O(1)アクセス時間」とはどういう意味ですか?
この「O(1)アクセス時間」という用語が「すぐに」という意味で使用されているのを見てきましたが、その意味がわかりません。同じ文脈で私が見​​るもう1つの用語は、「O(n)アクセス時間」です。誰かがこれらの用語の意味を簡単な方法で説明してもらえますか? こちらもご覧ください Big O表記とは何ですか?使用しますか? 8歳児向けBig-O?
126 big-o 

19
最大単一販売利益
ある日の株価を表すn個の整数の配列が与えられているとします。私たちは、ペア見つけたい(buyDay、sellDay)と、buyDay≤sellDay我々は上の株式を購入した場合、そのようなことを、buyDayとのそれを販売しsellDay、私たちは私たちの利益を最大にするが。 明らかに、可能なすべての(buyDay、sellDay)ペアを試し、それらのすべてから最良のものを取り出すことにより、アルゴリズムのO(n 2)ソリューションがあります。しかし、O(n)時間で実行されるより良いアルゴリズムはありますか?

15
これは技術的には「Hello World」のO(1)アルゴリズムですか?
これは「Hello、World!」のO(1)アルゴリズムとして分類されますか??? public class Hello1 { public static void Main() { DateTime TwentyYearsLater = new DateTime(2035,01,01); while ( DateTime.Now < TwentyYearsLater ) { System.Console.WriteLine("It's still not time to print the hello ..."); } System.Console.WriteLine("Hello, World!"); } } 私は使用することを考えています DateTime TwentyYearsLater = new DateTime(2035,01,01); while ( DateTime.Now < TwentyYearsLater ) { // …
117 c#  .net  algorithm  big-o 

8
ハッシュテーブルは本当にO(1)になるのでしょうか?
ハッシュテーブルがO(1)を達成できることは一般的な知識のようですが、それは私には意味がありませんでした。誰かがそれを説明できますか?頭に浮かぶ2つの状況を次に示します。 A. 値は、ハッシュテーブルのサイズよりも小さいintです。したがって、値は独自のハッシュであるため、ハッシュテーブルはありません。しかし、あったとしても、それはO(1)であり、それでも非効率的です。 B. 値のハッシュを計算する必要があります。この状況では、検索されるデータのサイズの順序はO(n)です。O(n)の作業を行った後、ルックアップはO(1)になるかもしれませんが、それでも私の目にはO(n)が出てきます。 また、完全なハッシュテーブルまたは大きなハッシュテーブルがない限り、バケットごとに複数のアイテムが存在する可能性があります。したがって、いずれにしても、ある時点で小さな線形検索に発展します。 ハッシュテーブルはすばらしいと思いますが、理論的なものでない限り、O(1)の指定はありません。 ウィキペディアのハッシュテーブルに関する記事は、常に一定のルックアップ時間を参照しており、ハッシュ関数のコストを完全に無視しています。それは本当に公正な措置ですか? 編集:私が学んだことを要約するには: ハッシュ関数はキーのすべての情報を使用する必要がないため、一定の時間になる可能性があり、十分に大きいテーブルは衝突を一定の時間に近づけることができるため、技術的には正しいです。 ハッシュ関数とテーブルサイズが衝突を最小限に抑えるように選択されている限り、一定の時間のハッシュ関数を使用しないことがよくあるので、時間が経つとうまくいきます。

6
アルゴリズムがO(log n)の複雑さを持つ原因は何ですか?
big-Oについての私の知識は限られています。対数項が方程式に現れると、私はさらに驚かされます。 誰かがO(log n)アルゴリズムについて簡単に説明してもらえますか?対数はどこから来たのですか? これは特に、この中期的な練習問題を解決しようとしたときに発生しました。 X(1..n)とY(1..n)に整数の2つのリストが含まれ、それぞれが降順にソートされているとします。O(log n)時間アルゴリズムを使用して、2n個のすべての組み合わせ要素の中央値(またはn番目に小さい整数)を見つけます。exの場合、X =(4、5、7、8、9)およびY =(3、5、8、9、10)の場合、7は結合されたリストの中央値(3、4、5、5、7 、8、8、9、9、10)。[ヒント:バイナリ検索の概念を使用する]

2
JavaScript配列のビッグO
JavaScriptの配列は、アイテムを追加したり削除したりすることで非常に簡単に変更できます。ほとんどの言語の配列は固定サイズであり、サイズを変更するには複雑な操作が必要であるという事実を多少覆っています。JavaScriptでは、パフォーマンスの低い配列コードを簡単に記述できるようです。これは質問につながります: 配列のパフォーマンスに関して、JavaScript実装から期待できるパフォーマンス(大きなO時間の複雑さに関して) 私はすべての妥当なJavaScript実装に最大で以下の大きなOがあると想定しています。 アクセス-O(1) 追加-O(n) 付加-O(n) 挿入-O(n) 削除-O(n) スワッピング-O(1) JavaScriptでは、new Array(length)構文を使用して、配列を特定のサイズに事前入力できます。(ボーナス質問:この方法で配列を作成していますO(1)またはO(n))これは従来の配列に似ており、プリサイズの配列として使用すると、O(1)を追加できます。循環バッファロジックが追加された場合、O(1)の先頭に追加できます。動的に拡張する配列が使用される場合、O(log n)は両方の平均ケースになります。 ここでの想定よりも、いくつかの点でより良いパフォーマンスを期待できますか?仕様で概説されているものはないと思いますが、実際には、すべての主要な実装が舞台裏で最適化された配列を使用している可能性があります。動的に拡張する配列または他のパフォーマンス向上アルゴリズムが機能していますか? PS 私がこれを不思議に思っているのは、いくつかの並べ替えアルゴリズムを研究しているためです。それらのほとんどは、全体的な大きなOを記述するときに、追加と削除がO(1)操作であると想定しているようです。

14
リンクされたリストO(1)の途中に挿入するのはなぜですか?
リンクされたリストに関するウィキペディアの記事によると、リンクされたリストの途中に挿入することはO(1)と見なされます。O(n)だと思います。リストの最後近くにある可能性のあるノードを見つける必要はありませんか? この分析では、ノード操作の発見(必須ではあります)と挿入自体の説明は含まれていませんか? 編集: リンクリストには、配列に比べていくつかの利点があります。リストの特定のポイントへの要素の挿入は一定時間の操作ですが、配列への挿入は要素の半分以上を移動する必要がある場合があります。 上記の文は私に少し誤解を招くものです。私が間違っている場合は私を修正しますが、結論は次のようになります: 配列: 挿入/削除のポイントを見つけるO(1) 挿入/削除の実行O(n) リンクリスト: 挿入/削除のポイントを見つけるO(n) 挿入/削除の実行O(1) 私はあなたが位置を見つける必要がない唯一の時間はあなたがそれへのある種のポインタを保持している場合だと思います(いくつかのケースでは頭と尾のように)。したがって、リンクリストは常に挿入/削除オプションの配列に勝るとは言えません。
105 linked-list  big-o 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.