Metaverse/복습

STL - max_element와 min_element

onenewkong 2024. 1. 18. 13:09

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)의 시간복잡도를 가짐

'Metaverse > 복습' 카테고리의 다른 글

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