n = 정렬된 데이터의 수 , 비교 회수 m
Insertion point = 그 인덱스에 들어가면 정렬이 유지되는 위치
이진 탐색 알고리즘 구현 (Insertion point는 구현x, 값을 못찾으면 -1로 반환)
int binarySearch1(int[] arr, int key, int lowIndex, int highIndex) {
int mid;
if(lowIndex <= highIndex) {
mid = (lowIndex+highIndex) / 2;
if(key == arr[mid]) {
return mid;
}
else if (key < arr[mid]) {
return binarySearch1(arr, key, lowIndex, mid-1);
} else {
return binarySearch1(arr, key, lowIndex, mid+1);
}
}
return -1;
}
int binarySearch2(int[] arr, int key, int low, int high) {
int mid;
while(low <= high) {
mid = (low + high) / 2;
if(key == arr[mid]) {
return mid;
} else if(key < arr[mid]) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1; // 탐색 실패
}