정렬된 배열 또는 리스트에 적합한 고속 탐색 방법이다.
// n(배열의 길이), m(탐색 값), num(탐색 대상 배열)
public int binarySearch(int n, int key, int[] num){
int answer = 0;
Arrays.sort(num);
int lt = 0, rt = num.length-1;
while (lt <= rt){
int mid = (lt + rt) / 2;
if(num[mid] == key) {
answer = mid + 1;
break;
}
if(num[mid] > key) rt = mid - 1;
else lt = mid + 1;
}
return answer;
}
key > mid : 구하고자 하는 값이 중간값보다 높다면 lt 를 mid +1로 만들어 줌 (왼쪽 반을 버림)
key < mid : 구하고자하는 값이 중간값 보다 낮다면 rt 를 mid-1로 만들어 줌 (오른쪽 반을 버림)
key == mid : 구하고자 하는 값을 찾음 중간값 리턴