일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- django ORM
- react
- MAC
- 파이썬 알고리즘
- API
- Git
- es6
- django widget
- 알고리즘
- java
- 알고리즘 풀이
- c++
- 파이썬
- django rest framework
- 알고리즘 연습
- web
- HTML
- Baekjoon
- Django
- form
- Algorithm
- 알고리즘 문제
- AWS
- CSS
- DRF
- js
- 장고
- PYTHON
- javascript
- 백준
Archives
- Today
- Total
수학과의 좌충우돌 프로그래밍
[C++] 이진 탐색 알고리즘 본문
이진 탐색 알고리즘 (Binary Search)
이진탐색의 특징
log N
의 시간복잡도- 데이터가 정렬되있는 배열에서만 사용가능
- 반복문, 재귀함수를 통한 두 가지 방법으로 구현 가능
반복문을 통한 이진 탐색 구현
int search(int *arr, int length, int target) { int start = 0; int end = length-1; int mid = 0; while (start <= end){ mid = (start+end) / 2; if (arr[mid] == target) return mid; else { if (arr[mid] < target) start = mid+1; else if (arr[mid] > target) end = mid-1; } } return -1; }
재귀함수를 통한 이진 탐색 구현
int recursive_search(int *arr, int start, int end, int target) { int mid = (start+end) / 2; if (start > end) return -1; else { if (arr[mid] == target) return mid; else { if (arr[mid] < target) recursive_search(arr, mid+1, end, target); else if (arr[mid] > target) recursive_search(arr, start, mid-1, target); } } }
확인
int main(int argc, const char * argv[]) { int arr[10] = {1,2,3,5,7,11,14,19,25,30}; int num; int result; cout << "찾고자 하는 수를 입력하세요." << endl; cin >> num; int arr_size = sizeof(arr) / sizeof(*arr); result = search(arr,arr_size, num); if (result == -1) cout << "값이 존재하지 않습니다." << endl; else cout << "index:" << result << "에 있습니다." << endl; result = recursive_search(arr,0,arr_size-1, num); if (result == -1) cout << "값이 존재하지 않습니다." << endl; else cout << "index:" << result << "에 있습니다." << endl; }
'알고리즘 > C++' 카테고리의 다른 글
[C++] BAEKJOON 5052번 전화번호목록 (0) | 2019.08.26 |
---|---|
[C++] BAEKJOON 8901번 화학제품(ACM-ICPC Daejeon 2011) (0) | 2019.08.02 |
[C++] BAEKJOON 8895번 막대배치(ACM-ICPC Daejeon 2012) (2) | 2019.07.31 |
[C++] BAEKJOON 9455번 박스(ACM-ICPC Daejeon 2013) (0) | 2019.07.26 |
[C++] 최적의 소수찾기, 에라토스테네스의 체 (1) | 2019.02.08 |
Comments