排序根據文檔:確實Arrays.BinarySearch要求該陣列被以升序
public static <T> int binarySearch(T[] a, T key, Comparator<? super T> c)
搜索使用二進制 搜索算法指定的對象指定的數組。
數組必須根據 指定的比較(如通過sort(T [],比較器)方法)之前 在進行此調用被按升序排列。
如果沒有排序,結果是未定義的。如果數組包含與指定對象相同的多個元素,則不會保證哪一個會被找到。
上述是否意味着當陣列在升序順序排序,才能使用該方法Arrays.binarySearch
?
我測試如下所示
class Unturned {
public static void main(String[] args) {
String[] chars = {"a", "b", "c", "e","f","h","i"};
MySort ms = new MySort();
Arrays.sort(chars, ms);
for(String c : chars) System.out.print(c + " ");
System.out.println("\n" + Arrays.binarySearch(chars, "d", ms));
}
static class MySort implements Comparator<String> {
public int compare(String a, String b) {
return b.compareTo(a);
} } }
輸出:
i h f e c b a
-5
-5把插入點與值c的元件,其是正確的。 (即-4-1)。
爲什麼說文檔說數組必須按升序排序?
我覺得這讓我很困惑。我把這個描述解釋爲意味着比較器應該按升序對值進行排序,即a [0] <... ziggy 2012-01-02 18:43:58