2015-02-16 2 views
0

Я смущен о Arrays.binarySearch(Object[], Object).Массивы метод поиска путаница

public class SearchObjArray { 

    public static void main(String[] args){ 

     String[] sa = {"one","two","three","four"}; 

     Arrays.sort(sa); 

     for(String s : sa){ 
      System.out.println(s + " "); 
     } 
     System.out.println("\n one = " + Arrays.binarySearch(sa,"thro")); 
} 
} 

Когда программа запущена, она возвращает позицию -4. Я читал в книге, он утверждает, что точка ввода представлена ​​как (-(insertionPoint)-1). Почему это так? Я не могу понять этот момент.

+0

мой вопрос - оба. – benz

ответ

5

Точка вставки определяется как точка, в которой ключ будет вставлен в массив.

{"one","two","three","four"} 

рассортированные

{"four", "one", "three", "two"} 

и throw приходит после three. Таким образом, точка ввода будет 3. Таким образом, результат составляет

(-(insertionPoint) -1) = 
(-(3)    -1) = 
-4 
+0

большое вам спасибо. Я понял. – benz

Смежные вопросы