이진검색(binary search) Java 구현
2021. 3. 9. 19:02
이진검색(binary search) Java 구현
이진검색
알고리즘
요소가 오름차순이나 내림차순으로 정렬되어있는 상태에서 진행
중앙부터 시작해서 대소비교하면서 이동
Java에 Arrays.binarySearch 메소드가 있지만 직접 구현해보고 싶어서 해본다
java 구현
Class BinSearch{
//요솟수가 n인 배열 a에서 key와 같은 요소를 이진검색한다.
static int binSearch(int[] a, int n, int key){
int pl =0; //검색 범위 첫 인덱스
int pr =n-1; // 검색 범위 끝 인덱스
do{
int pc= (pl + pr)/2; //센터값
if(a[pc] == key){
return pac; //검색 성공
}else if(a[pc] <key){
pl = pc + 1; //검색범위 뒤쪽 절반으로 좁힘
}else{
pr = pc-1 // 검색범위 앞쪽 절반으로 좁힘
} while(pl <= pr);
return -1; //검색 실패
}
}
시간복잡도 O(logN)
'skill > 알고리즘' 카테고리의 다른 글
[LeetCode]70. Climbing Stairs (Fibonacci sequence) (0) | 2021.03.15 |
---|---|
[LeetCode]67. Add Binary (0) | 2021.03.09 |
[LeetCode] 6. Maximum Subarray (brute force, kadane's algorithm) (0) | 2021.03.08 |
퀵 정렬(quick sort) Java 구현 (0) | 2021.03.08 |
셸 정렬(Shall sort) Java 구현 (0) | 2021.03.07 |