반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream> // cpp 기반
 
using namespace std;
 
int main()
{
    int arr[20= { 0,12,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 }; // 이진탐색은 오름차순 정렬이 필수적
 
    int first = 0;
    int last = 19;
    int middle = (first + last) / 2;
    int n;
 
    cout << "찾고싶은 수를 고르시오 : " ;
    cin >> n;
    cout << endl;
 
    while(first <= last) // 예외처리조건은 따로 포함하지 않았다. (first 가 last보다 커질경우,  오름차순이 아닐경우 등)
    {
 
        cout << "현재 first : " << first << " middle : " << middle << " last : " << last << endl<<endl;
        
        if (arr[middle] == n) // middle값이 n값과 같을 때
        {
            cout << "당신이 원하는 수는 arr["<<middle<<"] 번째에있는 "<<arr[middle] <<" 입니다." << endl ;
            cout << endl;
            break;
        }
 
        else if (n < middle) // middle값보다 n이 작을 때
        {
            last = middle - 1// middle을 포함 하지 않도록 한다.
            middle = (first + last) / 2;
        }
        
        else if (n > middle) // middle값보다 n이 클 때
        {
            first = middle + 1;
            middle = (first + last) / 2;
        }
    }
}
 
 
Crocus




이 코드는 예외처리를 담지 않았고, 이진 탐색의 원리를 알아보기위해 작성 하였습니다.


반응형