2015 IT 웹 기반 개발자과정/JAVA
JAVA BinarySearch // 배열 중 원하는 값 찾기
by 한여름밤의코딩
2015. 11. 2.
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();
}
}
}