Binary search : 실행 전 오름차순 혹은 내림차순으로 정렬이 되어 있어야함.
이진 검색은 결정알고리즘에도 사용됨.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
class Main {
static int answer = 0;
public static void main(String args[]) throws Exception {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int [ ]arr = new int[n];
for ( int i = 0 ; i < n ; i++) {
arr[i] = in.nextInt();
}
//selection sort.
for (int i = 1 ; i < n ; ++i) {
int tmp = arr[i];
int j = 0;
for ( j = i-1 ; j >= 0 ; j-- ) {
if( arr[j] > tmp)
arr[j+1] = arr[j];
else break;
}
arr[j+1] = tmp;
}
//binary search
int lt=0;
int rt=n;
while (lt <=rt) {
int mid = (rt + lt)/2;
if( arr[mid] == m) {
answer = mid + 1;
break;
}
if ( arr[mid] > m)
rt = mid-1;
else
lt = mid+1;
}
System.out.println(answer);
}
}
ex)
input
8 32
23 87 65 12 57 32 99 81
output
3
'PS > inflearn java coding' 카테고리의 다른 글
결정알고리즘 연습 2 (0) | 2022.04.10 |
---|---|
결정알고리즘 연습 1 (0) | 2022.04.10 |
Comparable 구현을 이용한 객체 정렬 예제 (0) | 2022.04.10 |
LRU 연습문제 (0) | 2022.04.10 |
정렬 (0) | 2022.04.10 |