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