이진 검색

[Java] 이진 검색 이해하기
Dec 18, 2023
이진 검색

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