반응형
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,1, 2,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 |
이 코드는 예외처리를 담지 않았고, 이진 탐색의 원리를 알아보기위해 작성 하였습니다.
반응형
'Applied > 자료구조' 카테고리의 다른 글
이중 연결 리스트 기반 데크(Dequeue) 개념 (0) | 2016.04.13 |
---|---|
Template를 이용한 Stack (0) | 2016.04.11 |
동적 배열 리스트 명단 만들기 (0) | 2016.03.12 |
Dummy 노드를 이용한 연결 리스트(Dummy Linked List) 소스코드 (0) | 2016.02.28 |
연결 리스트 기반 스택(List Base Stack) 개념 (0) | 2016.02.26 |