Binary Search 이진탐색

// int 배열 

int list[] = {1,3,5,10,2,11, 13,14,15,18};

System.out.println();

// int 배열 정렬

Arrays.sort(list);

for(int a:list)

System.out.print(a+" ");


// 구현된 binary search

int findindex = binarySearch(list, 11);

System.out.println();

System.out.println("index"+findindex);

System.out.println("value"+list[findindex]);


// lo : low open , hi : high interval, arr 는 항상 오름차순 정렬되어 있다는 전제하에 수행

public static int binarySearch(int[] arr, int x){

int lo = -1; int hi = arr.length; int mid;

while(lo + 1 < hi){   // lo + 1 = hi 일때 종료됨 정의에 의해 항상 lo < hi 가 성립됨

mid = (lo + hi)/2;    // 중간값 index    

if (x==arr[mid]) return mid; // 찾았을경우 index 리턴

if (arr[mid] < x) 

   lo = mid;    // 중간값이 찾고자 하는 값보다 적을때 low 값을 mid 로 설정

else

hi = mid; // 중간값이 찾고자 하는 값보다 클때 high 값을 mid 로 설정

}

return -1; // 찾지 못하였을경우(없을경우) -1 리턴

}

'SW > 알고리즘' 카테고리의 다른 글

간편 조합 Combination (java)  (0) 2017.08.29
위상정렬 Topological sort  (0) 2017.08.18
재귀호출 Recursive call  (0) 2017.01.22
삼각형의 넓이  (0) 2017.01.13
(a+b)%c = (a%c+b%c)%c 증명  (0) 2017.01.12

+ Recent posts