본문 바로가기
프로그래밍 언어/C++

[C++] lower_bound, upper_bound 사용해보기

by 까망 하르방 2025. 1. 27.
반응형

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 (이분 탐색)

Binary Search (이분 탐색) 정렬된 자료에서 목표값을 찾고자 할 때, 사용되는 탐색기법 O(logN) 리스트 중간의 값(mid)을 선택하여 찾고자 하는 값과 비교하는 방식 분할 정복 알고리즘(Divide and Conquer Al

zoosso.tistory.com

 

 

Parametric Search

 

[탐색] 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

댓글