본문 바로가기

JAVA/알고리즘 예제

[JAVA] 이분 검색(Binary Search)

정렬이 되어 있다는 가정 하에 시작해야 하며

정렬이 되어있지 않다면 정렬하고나서 사용해야한다.


예제 배열

{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