max_element
template<class ForwardIt>
ForwardIt max_element(ForwardIt first, ForwardIt last)
{
if (first == last)
return last;
ForwardIt largest = first;
while (++first != last)
if (*largest < *first)
largest = first;
return largest;
}
template<class ForwardIt, class Compare>
ForwardIt max_element(ForwardIt first, ForwardIt last, Compare comp)
{
if (first == last)
return last;
ForwardIt largest = first;
while(++first != last)
if (comp(*largest, *first))
largest = first;
return largest;
}
min_element
template<class ForwardIt>
ForwardIt min_element(ForwardIt first, ForwardIt last)
{
if (first == last)
return last;
ForwardIt smallest = first;
while (++first != last)
if (*first < *smallest)
smallest = first;
return smallest;
}
template<class ForwardIt, class Compare>
ForwardIt min_element(ForwardIt first, ForwardIt last, Compare comp)
{
if (first == last)
return last;
ForwardIt smallest = first;
while (++first != last)
if (comp(*first, *smallest))
smallest = first;
return smallest;
}
Time Complexity
max_element와 min_element는 전체 element를 탐색하여 최대값 또는 최소값을 찾음
max(N - 1, 0)회 비교를 진행
이때, N = std::distance(first, last)
즉, Big - O 표기법으로 표현한다면 O(N)의 시간복잡도를 가짐
'Old > 복습' 카테고리의 다른 글
STL - set (0) | 2024.01.30 |
---|---|
STL - sort (0) | 2024.01.18 |
C++ - 복사 생성자 (1) | 2024.01.03 |
C++ - 범위 기반 for문 (1) | 2024.01.03 |
C++ - 생성자와 소멸자 (0) | 2023.12.27 |