Development Palette
이진 검색 본문
- 가운데에 있는 값과 찾는 키를 비교하고 다음 구간을 결정하고, 그 구간을 또 반으로 나누어 키 비교를 반복하는 검색방법을 통해 원하는 키를 찾는 것
- 이진 검색을 하기 위한 수행 조건은 정렬된 상태
- 시간복잡도 : log2의 N승
- 이진검색은 문제를 풀 때 이진검색의 아이디어를 접목하여 사용하기 때문에 스스로 구현할 줄 알아야함!
package com.ssafy.w0817;
import java.util.Arrays;
public class BinarySearchTest {
public static void main(String[] args) {
int[] arr = {10,4,6,20,35,7};
Arrays.sort(arr); // 값들을 오름차순 정렬
// 4,6,7,10,20,35
System.out.println(binarySearch(arr, 6));
System.out.println(binarySearch(arr, 35));
System.out.println(binarySearch(arr, 50));
System.out.println(Arrays.binarySearch(arr, 6));
System.out.println(Arrays.binarySearch(arr, 35));
System.out.println(Arrays.binarySearch(arr, 50));
}
// key에 해당하는 원소의 인덱스 리턴.
static int binarySearch(int[] arr, int key) {
int start = 0, end = arr.length-1;
while(start<=end) {
int mid = (start+end)/2; // 중간 위치
if(arr[mid] == key) {
return mid;
}else if(arr[mid]<key) {
start = mid+1;
}else {
end = mid-1;
}
}
// 못찾았다면
return -1;
}
}
output
1
5
-1
1
5
-7
'Algorithm > 개념' 카테고리의 다른 글
[순열] 비트마스크로 순열 (0) | 2021.08.18 |
---|---|
[순열, 조합] NextPermutation (0) | 2021.08.18 |
분할 정복 기법 (0) | 2021.08.18 |
그리디, 탐욕 알고리즘 (0) | 2021.08.18 |
2차원 배열 지그재그 (0) | 2021.08.05 |
Comments