2015 IT 웹 기반 개발자과정/JAVA

JAVA BinarySearch // 배열 중 원하는 값 찾기

한여름밤의코딩 2015. 11. 2. 15:23
package BinarySearch;

public class BSearch {
	
	public	boolean BinarySearch(NumArray p,int iFind)  //반복문으로 값 찾기
	{
		int		first,last,check;
		first = 0;
		last = p.Count-1;
		do {
			check = (first+last) / 2;
			if (p.Array01[check]==iFind) return true;
			if (p.Array01[check] > iFind) {
				if (last==check) return false;
				last = check;
			} else {
				if (first==check) return false;
				first = check; 
			}
		}while(first!=last);
		return false;
	}
	
	public static boolean Re_BinarySearch(NumArray p,int iFind,int S, int F) //재귀함수로 값 찾기   S는 배열의 첫번째 0, F는 배열의 마지막
	{
		int check = (S+F)/2;
		boolean ret = false;
		
		if (p.Array01[check]==iFind) {
			System.out.println(iFind+"는 "+(check+1)+"번째 숫자입니다.");
			return true;
		}
		if (S==F) {
			System.out.println("없는 숫자입니다");
			return (false);
		}
		if (p.Array01[check] > iFind) {
			ret = Re_BinarySearch(p,iFind,S,check-1);
		} else if((p.Array01[check] < iFind) ){
			ret = Re_BinarySearch(p,iFind,check+1,F); 
		}
		return ret;
		
	}
		
	public static void main(String[] args){
		BSearch test = new BSearch();
		NumArray Num01 = new NumArray(10);
		boolean check01,check02;
		
//		Num01.ArrayInput();
		Num01.PrintArray();

//		Num01.PrintArray();
		Re_BinarySearch(Num01, 99, 0, 10);
		
		
	}
}	

=================================================================================
package BinarySearch;  

import java.util.Scanner;

public class NumArray {              //배열 만들기
	int		Array01[] = {12,14,21,24,45,55,63,72,88,99 };
	int		Count;
	public	NumArray(int Count)
	{
		this.Count = Count;
//		Array01 = new int [Count];
	}
	public int getCount()
	{
		return Count;
	}
	public	void PrintArray() // 배열 출력
	{
		int	i;
		for(i=0;i<Count;i++) System.out.printf("%d,",Array01[i]);
		System.out.println();
	}
	public	void ArrayInput()
	{
		int	i;
		Scanner scan = new Scanner(System.in);
		for(i=0;i<Count;i++) {
			Array01[i] = scan.nextInt();	
		}		
	}
}