JAVA

Arrays.binarysearch(int[] arr, int key)

아뵹젼 2023. 2. 20.

이 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

댓글