String[] sortedArray = new String[]{"Quality", "Name", "Testing", "Package"};
// Search for the word "cat"
int index = Arrays.binarySearch(sortedArray, "Quality");
私はいつも得る-3
。問題は にあり"Name"
ます。"Name"
配列に入れられないのはなぜですか? 何か案が?
String[] sortedArray = new String[]{"Quality", "Name", "Testing", "Package"};
// Search for the word "cat"
int index = Arrays.binarySearch(sortedArray, "Quality");
私はいつも得る-3
。問題は にあり"Name"
ます。"Name"
配列に入れられないのはなぜですか? 何か案が?
を使用するにはbinarySearch
、最初に配列を自分でソートする必要があります。
String[] sortedArray = new String[]{"Quality", "Name", "Testing", "Package"};
java.util.Arrays.sort(sortedArray);
int index = Arrays.binarySearch(sortedArray, "Quality");
配列はソートされている必要があります。binarySearch() の Javadoc から:
この呼び出しを行う前に、その要素の自然な順序に従って、範囲を昇順に並べ替える必要があります。ソートされていない場合、結果は未定義です。
二分探索を機能させるには、配列をソートする必要があります。binarySearchの javadoc には次のように書かれています。
この呼び出しを行う前に、( sort(Object[]) メソッドによる) 要素の自然な順序に従って、配列を昇順に並べ替える必要があります。ソートされていない場合、結果は未定義です。
(強調を追加しました。)
そしてその理由は簡単です。二分探索アルゴリズムには、入力配列がソートされているという前提条件があります。