Binarysearch
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("찾지 못했습니다.");
}
}
}