이 method는 정렬이 되어 있어야 동작하는 알고리즘이다.
나는 만약 key값이 없다면 단순히 -1을 리턴하는 줄 알았는데, 공식문서에 나와있는 return 값에 대한 설명은 다음과 같다.
해당 key를 찾으면 그 위치를 리턴하고,
그렇지 않으면 -(insertion point) - 1 을 리턴한다.
Insertion Point 란? key보다 큰 최초의 위치이다.
즉, key가 존재 하지 않으면 key를 넣었을 때 정렬된 값의 인덱스를 음수로 변경하여 반환한다.
예시
private static int[] values = { 3, 11, 15, 20, 21, 29, 45, 59, 65, 72 };
System.out.println("====== Arrays.binarySearch(배열, key) =======");
System.out.println(Arrays.binarySearch(values, 65));
System.out.println(Arrays.binarySearch(values, 3));
System.out.println(Arrays.binarySearch(values, 2));
System.out.println(Arrays.binarySearch(values, 46));
출력값을 보면 알 수 있듯이, 65 와 3은 values 배열에 있기 때문에 해당 위치를 반환한다.
2 => 없다. 따라서 values에 삽입되는 insertion point 가 0이기 때문에 0-1 = -1 을 반환한다.
46 => 없다. 따라서 values 에 삽입되는 insertion point 가 7이기 때문에 -(7)-1=-8 을 반환한다.
'JAVA' 카테고리의 다른 글
Java Arrays 클래스 (0) | 2023.02.09 |
---|---|
나머지 연산(modulo) 의 분배법칙... (0) | 2023.02.03 |
댓글