1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = {1,2,3,4,5,6,7,8,9,10};
System.out.print("찾으시려는 숫자를 입력하시오 : ");
int n = sc.nextInt();
int left = 0;
int right = arr.length-1;
for(int i =0;;i++) {
int mid = (left+ right)/2;
if(arr[mid] == n) {
System.out.printf("찾았습니다. 찾는 문자는 %d에 있습니다.", i);
break;
}
else if(arr[mid]>n)
right = mid-1;
else {
left = mid+1;
}
}
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
1. left와 right를 설정한다.
2. left와 right를 이요하여 mid를 설정해준다.
3. 만약 찾는 문자가 배열의 mid보다 오른쪽에 있을 경우 left를 mid+1로 설정해준다.
4. 또는 찾는 문자가 배열의 mid보다 왼쪽에 있는 경우 right를 mid -1 로 설정한다.
*이진탐색을 이용할 경우 배열이 오름차순이나 내림차순으로 정리 되어 있어야 한다.
'알고리즘' 카테고리의 다른 글
Java) 순차탐색 알고리즘 구현 (0) | 2020.04.17 |
---|---|
Java) 회문 판별 알고리즘 (0) | 2020.04.17 |
Java) 소수 판별 알고리즘 (0) | 2020.04.16 |