Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL sort() 함수로 배열 정렬하기 – 예제 코드와 동작 원리

개요

C++ 표준 템플릿 라이브러리(STL)가 제공하는 sort() 함수를 사용하면 배열이나 벡터를 단 한 줄의 코드로 손쉽게 정렬할 수 있습니다. 이 글에서는 <algorithm> 헤더에 포함된 sort() 함수를 이용해 배열을 오름차순으로 정렬하는 방법을 예제와 함께 살펴보겠습니다.

예를 들어 배열이 A = [52, 14, 85, 63, 99, 54, 21]과 같다면, 정렬 후 결과는 [14, 21, 52, 54, 63, 85, 99]가 됩니다.

예제 코드

아래 코드는 배열을 선언한 뒤, sort() 함수에 배열의 시작 주소와 끝 주소를 인자로 전달하여 정렬을 수행합니다.

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int arr[] = {52, 14, 85, 63, 99, 54, 21};
    int n = sizeof(arr) / sizeof(arr[0]);

    cout << "정렬 전 배열: ";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";

    sort(arr, arr + n);

    cout << "\n정렬 후 배열: ";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";

    return 0;
}

실행 결과

정렬 전 배열: 52 14 85 63 99 54 21
정렬 후 배열: 14 21 52 54 63 85 99

sort() 함수의 동작 원리

sort(first, last)[first, last) 범위, 즉 첫 번째 인자가 가리키는 원소부터 두 번째 인자 바로 앞 원소까지를 정렬합니다. 배열을 정렬할 때는 위 예제처럼 sort(arr, arr + n) 형태로 호출하면 됩니다.

이 함수는 내부적으로 인트로소트(Introsort) 알고리즘을 기반으로 동작하며, 퀵 정렬·힙 정렬·삽입 정렬을 상황에 맞게 혼합해 사용합니다. 따라서 평균 및 최악의 경우 모두 O(n log n)의 시간 복잡도를 보장하여 매우 효율적입니다.

참고: 내림차순 정렬

기본적으로 sort()는 오름차순으로 정렬하지만, 세 번째 인자로 비교 함수를 전달하면 정렬 기준을 변경할 수 있습니다. 내림차순으로 정렬하려면 다음과 같이 작성합니다.

#include <functional>
sort(arr, arr + n, greater<int>());  // 내림차순 정렬

마무리

C++ STL의 sort() 함수는 직접 정렬 알고리즘을 구현할 필요 없이 간결하고 안정적인 성능으로 배열을 정렬할 수 있는 강력한 도구입니다. 실무에서는 물론 코딩 테스트에서도 가장 널리 사용되는 함수 중 하나이므로, 사용법과 시간 복잡도를 함께 기억해 두면 큰 도움이 됩니다.