私は最初に配列をソートしてからバイナリ検索を使うことができると思います。 だからO(n^2)。 これは間違いありませんか?arraylistの要素を検索したい場合は、Big-Thetaは何ですか?
答えて
私は配列を最初にソートしてからバイナリ検索を使うことができると思います。だからO(n^2)。あれは正しいですか?
このアプローチの複雑さは、ソートではO(nlogn)、バイナリ検索では検索を行うO(logn)です。全体的なO(nlogn)。
代替案は、O(n)である単純な線形検索ルックアップ(例えば、contains
またはループを使用)です。
バイナリ検索を並べ替えて使用すると、多くの検索で(ソート全体の)並べ替えコストを償却することができます。すなわち一度ソートすると、何度も検索する。
リニア検索よりも優れている場合は、ソートされた構造体をO(nlogn)よりも良く、O(n)よりも良好に検索できるデータ構造を使用する必要があります。
最後に...あなたがこれを行う場合:
- ソート初期のArrayListを。
- バイナリ検索を使用して挿入/削除の正しいポイントを見つけることによってソートされたarraylistを更新します。
- ルックアップにバイナリ検索を使用します。
あなたはO(O(nlogn)はステップ償却ソート付き)(n)は、更新操作及びO(LOGN)ルックアップ要するに
で終わるであろう、それは複雑な集合であります最適なものは、アプリケーションの予想される動作に依存します。
1からTreeSet
は(それは重複を排除することを法とする)ことを行うだろう。これは、フードの下に赤黒の二分木を使用します。あなたのデータが実際にセットである場合、O(1)
操作を与えるHashSet
を考慮する必要があります(ハッシュコード機能が病理学的でない限り)。
OPがリストではなくSetを使用してくれるのであれば、 'TreeSet'ではなく' HashSet'をお勧めします。 –
@PaulBoddington - 良い点。欠点は、順番に反復できないことです。 –
- 1. ArrayList =コンポジットまたは素数の検索
- 2. JavaのArrayListの要素を検索するには?
- 3. ArrayList内の同じ要素を検索する方法は?
- 4. 場合は検索配列の要素は親要素の値に等しい値
- 5. 要素が複数のクラスを持つ場合、jqueryは特定のクラスで要素を検索します
- 6. Map/ArrayList:どちらが素早く要素を検索するのですか
- 7. UIオートメーションビューで要素情報が表示されない場合、appiumから要素を検索する方法
- 8. オプションの要素はRAIIを中断しますか?はいの場合、より良いアプローチは何ですか?
- 9. Arraylistの要素名はすでに存在します。そうでない場合は更新します。新しい要素をJavaで作成します。
- 10. いくつかのキーワードで要素を検索するには?
- 11. 変更入力値から検査した場合の要素
- 12. 検索fqlを使用する場合の「距離」のパラメータは何ですか?
- 13. XMLの任意の場所で要素または属性の値を検索
- 14. LINQ:要素がない場合、All()は何を返しますか?
- 15. 検索クエリが空の場合、mongooseは何を返しますか?
- 16. リスト内の要素を検索し、見つからない場合は別のリストで検索してください
- 17. arraylistのarraylistに要素を追加する方法はありますか?あなたはハッシュマップにArrayListに似た何かを探しているよう
- 18. Jqueryでテキストを検索して要素を検索します。
- 19. Arraylistでの検索
- 20. JSPでhtml要素がある場合、実行順序はどうですか?第1の本体要素またはヘッド要素を実行します何
- 21. オブジェクトとオブジェクトがArrayListから衝突した場合の検出
- 22. 名前のArraylistを検索しても返信しない場合は、再度返信してください
- 23. 検索要素
- 24. リニア検索とバイナリ検索の違いは何ですか?
- 25. コンポーネントまたは要素の正しいPropTypeは何ですか
- 26. 何も見つからない場合、検索メソッドは何を返すべきですか?
- 27. ハッシュコードではなく要素をarraylistに表示したい
- 28. 全要素を検索する要素
- 29. ArrayListでBinarySearchから検索
- 30. いずれかの要素でホバリングした場合のJQuery
配列を並べ替えることはできませんし、一度それをトラバースしてO(n)で行うこともできます。 – azurefrog