최대 1 분 소요

1. 재귀
public class 이진탐색_재귀 {	
	public static int binarySearch(int[] arr , int target, int start, int end) {

		// 종료조건 1) 찾고자하는 값이 없음 
		if(start > end) return -1 ; 
		
		int mid = (start+end)/2 ; 
		
		// 종료조건 2) 값을 찾음
		if(arr[mid] == target) return mid ; 
		// 중간점의 값보다 찾고자하는 값이 작은경우, 중간점 왼쪽으로 끝점을 옮겨 다시 이진 탐색 
		else if(arr[mid] > target) return binarySearch(arr,target, start, mid-1);
		// 중간점의 값보다 찾고자하는 값이 큰 경우, 중간점 오른쪽으로 사적점을 옮겨 다시 이진 탐색 
		else return binarySearch(arr, target, mid+1, end) ; 		
	}
} // class


2. 반복문
public class 이진탐색_반복 {
	public static int binarySearch(int[] arr, int target, int start, int end) {
		
        while(start <= end) {
			// 보통 재귀함수의 대체로 while 반복문을 사용한다
			int mid = (start+end)/2 ; 			
			// 종료조건 
			if(arr[mid] == target)
				return mid ; // 반복문을 나가는 것이 아닌 함수를 종료 
			else if(arr[mid] > target) 
				end = mid-1 ; 
			else
				start = mid +1 ;
		}
		return -1; 
	}
} // class 


3, 라이브러리
import java.util.Arrays;
public class 이진탐색_라이브러리 {	
    
	public static int binarySearch(int[] arr, int target, int start, int end) {	
		return Arrays.binarySearch(arr, target)
	}
} // class 


댓글남기기