Contents
이진 검색(Binary Search)이진 검색(Binary Search)
이진 검색을 하기 위해서는 반드시 정렬이 되어 있어야 한다.
이진 검색 코드
package ex03.test;
public class BinaryTest02 {
public static void main(String[] args) {
// 이진 검색 => 반드시 정렬이 되어 있어야 한다.
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9,10}; // 9 / 2 = 4
int target = 10;
int count=0;
int mid = arr.length/2;
int start = 0;
int end = arr.length-1;
for (;;) {
count++;
if (arr[mid] == target) {
System.out.println("타켓 찾음");
System.out.println("시도 횟수: "+count+"번");
System.out.println("배열의 "+(mid+1)+"번째에 있습니다.");
break;
} else if (arr[mid] > target) {// 왼쪽
end = mid-1;
mid = (start+end+1)/2;
} else { // target 오른쪽
start = mid+1;
mid = (start+end+1)/2;
}
}
}
}

이진 검색을 이용하면 log2(배열의 개수)의 시간복잡도(O)를 가진다.
Binary Search의 효율과 풀스캔의 효율은 찾는 횟수에 따라 달라진다.
ex) Binary Search 의 시간 복잡도는 5, 풀스캔의 시간 복잡도는 20이라 할 때,
5번개의 데이터를 찾는다면 풀스캔이 더 효율이 좋음
전체 데이터의 15% 미만인 경우에는 Binary Search가 더 빠름
Share article