음.. 오늘은 코드 하나 투척 하고 가려고한다.
public class TestOfMethodByJavaAndMe {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77,88};
int binarySearch = Arrays.binarySearch(arr, 7); //인덱스 번호를 알려준다.
System.out.println(binarySearch);
int test = binarySearch(arr, 7);
System.out.println(test);
if(test == binarySearch)
System.out.println("테스트를 통과했습니다.");
}
public static int binarySearch(int[] arr , int key){
int startOfArray = 0;
int endOfArray = arr.length-1;
while (startOfArray <= endOfArray) {
int pc = (startOfArray+endOfArray)/2;
if(arr[pc] == key)
return pc;
else if (arr[pc] < key) {
startOfArray = pc+1;
}
else endOfArray = pc -1;
}
return -1;
}
}
위의 코드는 JAVA 에서 제공하는 이진 검색 메서드와 내가 직접 만든 메서드의 결과가 같은지 확인해 보는 코드다.
위의 코드를 짠 이유는
1. JAVA에서 이진 검색 메서드를 제공한다는 사실을 몰랐다.
2. 진짜 맞나? 라는 생각
3. 메서드에서 반환하는 값이 인덱스 값일까? 아니면 key 값이랑 일치하는 값을 던져주는 것일까?
총 3가지의 궁금증 때문에 코드를 사용했다.
결과
완벽하게 일치했다.

알게 된점!
1. java 메서드로 제공되는 것은 인덱스 값을 반환해준다.
2. 일치하는 값이 없다면 어디로 들어갔을때 최적인지를 알려준다.
HowTo?
배열의 요소중 자신의 값보다 바로 다음 값에 위치하는 인덱스 번호를 음수로 알려준다!
생각보다 유익한 경험이 되었다.
'이전 학습 내용' 카테고리의 다른 글
| 띠용~~ (스프링 타임리프 경로의 문제) (0) | 2022.12.26 |
|---|---|
| 재귀 알고리즘의 분석 (0) | 2022.12.23 |
| 솟수 구하기 풀어보기 (0) | 2022.12.08 |
| Why Use Spring? (0) | 2022.12.06 |
| Framework (0) | 2022.12.06 |