[필기정리] Day61 - 2진검색 예제문제

SW/Java

2020. 9. 17. 15:40

# 2진검색

 

이진 탐색(Binary Search) 알고리즘 개념 이해 및 추가 예제

Jihun's Development Blog

cjh5414.github.io

 

Q. 사용자에게 임의의 숫자 10개를 입력받고 배열에 저장하라.

    이후 해당 숫자가 있으면 있다고 출력하고, 없으면 없다고 출력하라.

A.

import java.util.Scanner;

public class BinarySearch {

	public static void main(String[] args) {
		int[] num = {1, 2, 3, 4, 5, 6, 7, 10, 50, 92};
		
		//////////////////////////////////////////////////
		
//		int[] num = new int[10000];
//		
//		for(int i=0;i<num.length;i++) {
//			num[i] = i+1;
//		}
		
		//////////////////////////////////////////////////
		
		int first = 0;
		int last = num.length-1;
		int mid = (first+last)/2;
		
		Scanner sc = new Scanner(System.in);
		int inputNum = 0;
		int cnt = 0;
		
		System.out.println("찾고자 하는 숫자를 입력 : ");
		inputNum = sc.nextInt();
		
		while(first<=last)
		{

			cnt++;
			if(inputNum>num[mid]) first = mid + 1;
			else if(inputNum < num[mid]) last = mid - 1;
			else{
				System.out.println("정답 : " + (mid + 1) + "번째 있음");
				System.out.println("찾은 횟수 : " + cnt);
				break;				
			}
			mid = (first+last)/2;
		}
		if(first>last) 
		{
			System.out.println("검색결과가 없습니다.");
			System.out.println("찾은 횟수 : " + cnt);
		}
		sc.close();
	}
}
728x90