lower_bound, upper_bound
▶ lower_bound(start, end, val) = [start, end) 범위에서 val 이상인 첫 번째 원소 위치 반환
▶ upper_bound(start, end, val) = [start, end) 범위에서 val 을 초과하는 첫번째 원소 위치 반환
Harbang lower_bound(Harbang first, Harbang last, const T& value);
Harbang lower_bound(Harbang first, Harbang last, const T& value, Compare comp);
Harbang upper_bound(Harbang first, Harbang last, const T& value);
Harbang upper_bound(Harbang first, Harbang last, const T& value, Compare comp);
- 4번째 인자로 Comparator가 들어갈 수 있다.
- #include <algorithm>
- lower_bound와 upper_bound는 내부적으로 이진 탐색을 수행하기 때문에
범위 내의 원소들이 비내림차순으로 정렬되어 있어야 한다.
[예제]
vector<int> v = { -2, -2, -1, -1, 0, 0, 0, 1, 1 };
cout << lower_bound(v.begin(), v.end(), 0) - v.begin() << '\n'; // 4
cout << upper_bound(v.begin(), v.end(), 0) - v.begin() << '\n'; // 7
ower_bound(0)에서 0 이상인 값이
처음으로 나오는 인덱스 4 반환
upper_bound(0)에서는 0을 초과하는 값이
처음 나오는 인덱스 7 반환
Reference
Binary Search (이분 탐색)
Binary Search (이분 탐색) 정렬된 자료에서 목표값을 찾고자 할 때, 사용되는 탐색기법 O(logN) 리스트 중간의 값(mid)을 선택하여 찾고자 하는 값과 비교하는 방식 분할 정복 알고리즘(Divide and Conquer Al
zoosso.tistory.com
[탐색] Parametric Search
Parametric Search 최적화 문제를 결정 문제로 바꿔 푸는 것 O(logN) ex) Binary Search (이분 탐색)을 이용해서 Lower/Upper Bound를 구하는 경우가 많습니다. Binary Search (이분 탐색) Binary Search (이분 탐색) 정렬된
zoosso.tistory.com
정렬 알고리즘 비교
시간 복잡도 비교 ▶ O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2ⁿ) < O(n!) < O(nⁿ) 정렬 알고리즘 시간 복잡도 특징 안전성은 주어진 배열 원소의 배치와 상관없이 구현 속도에 변함이 없는가를 의미
zoosso.tistory.com
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] constexpr function (1) | 2025.01.29 |
---|---|
[C++] member initializer list (1) | 2025.01.29 |
[C++] rvalue reference (4) | 2025.01.27 |
[C++] constexpr 키워드 (2) | 2025.01.26 |
[C++] static_cast 사용 방법 및 필요성 (2) | 2025.01.26 |
댓글