Algorithm

Binarysearch

이상욱1 2015. 4. 22. 09:01

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

       }      

}

}