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

C++ STL sort() 함수로 배열 정렬하는 방법 완벽 가이드

C++ STL로 배열 정렬하기

C++에서는 <algorithm> 헤더 파일에 포함된 sort() 함수를 사용하면 별도의 정렬 알고리즘을 직접 구현하지 않고도 배열을 손쉽게 정렬할 수 있습니다.

예를 들어 A = [52, 14, 85, 63, 99, 54, 21]과 같은 배열이 있을 때, sort() 함수를 적용하면 [14, 21, 52, 54, 63, 85, 99]처럼 오름차순으로 정렬된 결과를 얻을 수 있습니다.

sort() 함수의 기본 문법

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() 함수는 내부적으로 인트로소트(Introsort) 알고리즘을 사용합니다. 이는 퀵 정렬, 힙 정렬, 삽입 정렬을 상황에 따라 조합한 하이브리드 방식으로, 평균 및 최악의 경우 모두 O(n log n)의 시간 복잡도를 보장하므로 매우 안정적이고 빠른 성능을 제공합니다.

내림차순으로 정렬하는 방법

기본적으로 sort()는 오름차순으로 정렬하지만, 세 번째 인자로 비교 기준을 전달하면 정렬 순서를 바꿀 수 있습니다. <functional> 헤더의 greater<int>()를 사용하면 내림차순 정렬이 가능합니다.

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

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

    sort(arr, arr + n, greater<int>());

    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
    // 출력 결과: 99 85 63 54 52 21 14
}

마무리

STL의 sort() 함수를 활용하면 퀵 정렬이나 병합 정렬 같은 알고리즘을 일일이 구현할 필요 없이 단 한 줄의 코드로 배열을 정렬할 수 있습니다. vector 등 다른 STL 컨테이너에도 동일하게 적용할 수 있어, C++ 프로그래밍에서 가장 널리 쓰이는 필수 함수 중 하나입니다.