import java.util.Scanner;
//이진검색(BinarySearch) 또는 이분검색 :
//정렬된 상태 에서 원하는 원소를 찾는 알고리즘
//중앙의 원소를 기준으로해서 찾는값이 더 크면 오른쪽을 탐색하고 더 작으면 왼쪽을 탐색함
//( 정렬이되있으므로 중앙을 기준으로 오른쪽 왼쪽을 나눌수있는 것 이다.)
public class Binarysearch {
public static void main(String[] args) {
int arr[]={1,2,3,4,5,6,7,8,9};
System.out.println("찾을 데이터:");
Scanner sc = new Scanner(System.in);
int searchkey=sc.nextInt();
int low=0;
int high=arr.length-1;
boolean flag=false;
int midresult=0;
while(low<=high){
int mid=(low+high)/2;//arr.length 이걸로 줘서 에러났었음
if(arr[mid]==searchkey){
flag=true;
System.out.println("찾음 "+mid);
midresult=mid;
break;
}
if(searchkey>mid){
low=mid+1;
}else {
high=mid-1;
}
}
if(flag){
System.out.println(searchkey+"를 "+midresult+"번째 위치에서 찾았습니다.");
}else{
System.out.println("찾지 못했습니다.");
}
}
}
'Algorithm' 카테고리의 다른 글
이진 탐색트리 개념 (0) | 2015.05.03 |
---|---|
quick sort 나누는 부분 성공 (0) | 2015.04.23 |
merge sort의 합병 부분 (0) | 2015.04.21 |
bubble sort (0) | 2015.04.15 |
selection sort (0) | 2015.04.14 |