알고리즘
[알고리즘] 이진 탐색(이분 탐색, Binary Search)
code_killer
2024. 4. 14. 15:24
728x90
반응형
1. 개요
1. O(logN) 시간 복잡도로 해당 배열에서 특정 값을 찾는 알고리즘
2. 알고리즘 코드
vector<int> ans;
// 이진 탐색 알고리즘
int binary_search(int n)
{
int low = 0;
int high = ans.size() - 1;
int ret = MAX_N;
while (low <= high) {
int mid = (low + high) / 2;
int num = ans[mid];
if (num >= n) {
ret = min(ret, mid);
high = mid - 1;
}
else
low = mid + 1;
}
return ret;
}
3. 문제
https://www.acmicpc.net/problem/12015
12015번: 가장 긴 증가하는 부분 수열 2
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000)
www.acmicpc.net
https://www.acmicpc.net/problem/1208
728x90