私は最初に配列をソートしてからバイナリ検索を使うことができると思います。 だから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. 要素が複数のクラスを持つ場合、jqueryは特定のクラスで要素を検索します
- 2. Map/ArrayList:どちらが素早く要素を検索するのですか
- 3. オプションの要素はRAIIを中断しますか?はいの場合、より良いアプローチは何ですか?
- 4. 検索fqlを使用する場合の「距離」のパラメータは何ですか?
- 5. LINQ:要素がない場合、All()は何を返しますか?
- 6. Arraylistでの検索
- 7. 名前のArraylistを検索しても返信しない場合は、再度返信してください
- 8. ハッシュコードではなく要素をarraylistに表示したい
- 9. いずれかの要素でホバリングした場合のJQuery
- 10. オブジェクトのArraylistで分を検索すると、arraylistの要素を比較できません
- 11. C++またはC++/CLIの場合はプログラムで検索
- 12. Arraylistで検索するには
- 13. リニア検索とバイナリ検索の違いは何ですか?
- 14. 何も見つからない場合、検索メソッドは何を返すべきですか?
- 15. 配列に100個の要素が含まれている場合、多くてもバイナリ検索で何個の要素が調べられますか?
- 16. が、私はその場で要素を作成したい場
- 17. LINQからXMLへの要素の検索または作成
- 18. 検索結果がない場合は、メッセージをエコーします。
- 19. XPath関数 'contains()'を使用して、検索パラメータが空白の場合、または何もない場合は何も返しません。
- 20. arrayListで検索する
- 21. は、効率的に検出した場合兄弟要素重複
- 22. shared_ptrコンテナ内の要素を検索していますか?
- 23. は、配列の要素を検索し、一言で言えば
- 24. ArrayList <?>、ArrayList、ArrayList <Object>の違いは何ですか?
- 25. PHPで配列要素を検索して削除するにはどうしたらいいですか?
- 26. 複数の検索要素
- 27. 子要素の場合はクリックしないようにする
- 28. サブ配列の合計が指定された場合の配列要素の検索
- 29. 検索キーワードが見つからない場合は、他の単語を検索してください。
- 30. すべての要素を合計しますjava arraylist
配列を並べ替えることはできませんし、一度それをトラバースしてO(n)で行うこともできます。 – azurefrog