정렬이 되어 있다는 가정 하에 시작해야 하며
정렬이 되어있지 않다면 정렬하고나서 사용해야한다.
예제 배열
{2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}
실행 결과
package jungbo;
import java.util.InputMismatchException;
import java.util.Scanner;
public class T25BinarySearch {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int array[] = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30};
int target;
while(true){
try{
System.out.print("찾으려는 숫자를 입력하세요 : ");
target = scan.nextInt();
break;
}catch(InputMismatchException e){
System.out.println("숫자만 입력해야 합니다.");
}
}
scan.close();
int low, middle, high;
low = 0; high = array.length-1;
for(int cnt=0;cnt<array.length;cnt++){
middle = (low+high)/2;
if(target == array[middle]){
System.out.println("찾으려는 숫자는 "+(middle+1)+"번째에 있습니다.");
break;
}else if(target > array[middle]){
low = middle+1;
}else{
high = middle-1;
}
if(low>high){
System.out.println("검색 결과 없음");
break;
}
}
}
}
더 생각해보기 164page 문제 코딩해보기
'JAVA > 알고리즘 예제' 카테고리의 다른 글
[JAVA] 합병(Merge) (1) | 2016.09.05 |
---|---|
[JAVA] 90도 회전 (Rotate) (1) | 2016.09.02 |
[JAVA] 삽입 정렬(Insertion Sort) (1) | 2016.09.01 |
[JAVA] 순위(석차) 계산기 (1) | 2016.09.01 |
[JAVA] ㄹ자 출력 (1) | 2016.08.31 |