A DESCRIPTION OF THE PROBLEM :
the doc for method Arrays.binarySearch() is wrong, which says the return value is the index of the search key when the key was found, otherwise -(insertion point - 1); but actually, the return value is - (insertion point + 1) when the key was not found!
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
(1)construct a array, like <code>int[] array = new int[]{1, 2, 3, 5}; </code>
(2)use the method Arrays.binarySearch(int[], int) to search the int value '4'
(3)use return value to resolve the insertion point
---------- BEGIN SOURCE ----------
import java.util.Arrays;
public class ArraysTest {
public static void main(String[] args) {
int[] array = new int[]{1,2,3,5};
int target = 4;
int retVal = Arrays.binarySearch(array, target);
int insertionPoint = -retVal + 1;
System.out.println(insertionPoint);
}
}
---------- END SOURCE ----------
the doc for method Arrays.binarySearch() is wrong, which says the return value is the index of the search key when the key was found, otherwise -(insertion point - 1); but actually, the return value is - (insertion point + 1) when the key was not found!
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
(1)construct a array, like <code>int[] array = new int[]{1, 2, 3, 5}; </code>
(2)use the method Arrays.binarySearch(int[], int) to search the int value '4'
(3)use return value to resolve the insertion point
---------- BEGIN SOURCE ----------
import java.util.Arrays;
public class ArraysTest {
public static void main(String[] args) {
int[] array = new int[]{1,2,3,5};
int target = 4;
int retVal = Arrays.binarySearch(array, target);
int insertionPoint = -retVal + 1;
System.out.println(insertionPoint);
}
}
---------- END SOURCE ----------