私はソートされたJava ArrayListを持っているとしましょう。今、私は値xのインデックスを探したいと思います。これを行うには、最速の方法(30行以上のコードなし)がありますか? IndexOf()メソッドの使用?単純なforループのすべての値を繰り返し処理しますか?いくつかのクールなアルゴリズムの使用? 50個の整数キーを考えてみましょう。リストがソートされているときにリスト内の値を見つける最良の方法
答えて
Binary searchですが、50アイテムしかないので、誰が気にしますか(何百万回もしなければならない場合を除きます)。単純な線形検索は簡単で、50項目のパフォーマンスの差はごくわずかです。
を編集する:組み込みのjava.util.Collections binarySearchメソッドを使用することもできます。項目が見つからない場合でも挿入ポイントが返されることに注意してください。アイテムが実際にあなたが望むものであることを確認するために、余分な数のチェックをする必要があります。ポインタのための@Matthewに感謝します。
tvanfossonが正しいとすれば、いずれかの時間が非常に短くなるため、このコードが頻繁に実行されない限り、大きな違いはありません。
しかし、Javaには、リスト(ArrayListsを含む)、バイナリ検索のための組み込み機能があります(Collections.binarySearch)。
キーが受け入れ可能な分布の場合、Interpolation Searchは実行時間を考慮すると非常に高速です。
コーディング時間を考慮すると、あなたのデータ型(私はC#から来て、Javaを知らない人)のためにavailiableであればバイナリ検索で組み込むことができます。
import java.util.ArrayList;
import java.util.Collections;
ArrayList myList = new ArrayList();
// ...fill with values
Collections.sort(myList);
int index = Collections.binarySearch(myList, "searchVal");
編集:未テストコード
コードありがとうございました:) – Baversjo
- 1. Java:ソートされたリスト内の要素を見つける最良の方法は何ですか?
- 2. リスト内の最小の番号のインデックス値を見つける?
- 3. C++:リンクされたリスト内のクラスの最高値を見つける
- 4. k回以上存在するリスト内のすべての要素を見つける最良の方法
- 5. リスト内のリストに一致する文字列を見つける方法?
- 6. リストのリスト内の特定のリストを見つける
- 7. 親リスト内のリスト<>のメンバーの値をソートする方法リスト
- 8. リスト内に最後に存在するDIRを見つける方法
- 9. リストのリスト:全体を通して値を見つける
- 10. OpenCVバイナリイメージ内の接続されたコンポーネントのリストを見つける方法
- 11. リスト内の文字列のインデックスを見つける方法
- 12. リスト内の要素のインデックスを見つける方法は?
- 13. コレクションフレームワークのリスト内の要素を見つける方法
- 14. リスト内のオブジェクトの出現数を最も少なく見つける方法
- 15. その属性値からリスト内のデータフレームを見つける方法は?
- 16. リスト内のアイテムの最後の出現を見つけるpython
- 17. リスト内の隣人を見つける最も効率的な方法
- 18. リスト内のアイテムランクを見つける最も効果的な方法は?
- 19. numpy配列内の値リストのインデックスを見つける
- 20. リスト内の辞書 - 値の見つけ方
- 21. リスト内に珍しい長さを見つける
- 22. リスト内で定義されたボタンを見つける方法は?
- 23. 配列内の異常な値を見つけるリスト
- 24. 2つのリストを追加する最も良い方法は?
- 25. リストをソートしてインデックスを見つける
- 26. アイソトープはデータのリストをフィルタリングしてソートする最良の方法ですか?
- 27. 配列リストの長さを見つける方法は?
- 28. datarow []内の列の最大値を見つける方法?
- 29. ソートされていないリスト内の要素を見つける最も効率的な方法は何ですか?
- 30. ソートされたリスト内の指定された番号よりも小さい番号を見つけよう
50個のキーについて、私は完全に同意するものとします。開発者の時間は最近のCPU時間よりも重要です。 IndexOf()を使用し、あなたの方法であります。 –
Java/has/this機能を除いて。 –
バイナリ検索は道のりです。リストには現在50項目しかないかもしれないが、コードが1年か2年で扱うべきことが分かっている。 –