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(); } } }