package class04;
import java.util.Scanner;
public class Test06 {
public static void main(String[] args) {
// [이진탐색(이분검색)]
// -> 탐색할 대상 배열이 "정렬"되어있어야 한다.
int[] data = { 1, 40, 50, 55, 60, 70, 81, 92, 94, 100 };
Scanner sc = new Scanner(System.in);
while (true) {
boolean flag = true; // 어떠한 행위가 잘 되었는지를 체크하는 변수
// T / F 밖에 없음
System.out.print("검색: ");
int num = sc.nextInt();
int L = 0;
int H = data.length - 1;
while (true) {
int M = (L + H) / 2; // M: L~H의 가운데이다. 1~100중에서 50을 물어보는 것 처럼
if (data[M] == num) {
System.out.println("[" + M + "]에 " + num + "가 존재합니다!");
break;
}
else if (data[M] > num) { // DOWN 상황 , break 당하지 않았다면 물어봐야함
H = M - 1;
}
else { // UP 상황
L = M + 1;
}
if (L > H) { // 교차(cross) 상황
System.out.println("찾는 데이터가 없습니다!");
flag = false; // 만약, 찾으려는 데이터가 없다면 F로 값을 변경
break;
}
}
if (flag) { // flag변수가 T상태를 유지하면, 멈출수있다!
// 내가 원하는 데이터를 찾은 상황 -> T
// 내가 찾으려는 데이터가 없는 상황 -> F
break;
}
}
}
}