C++에서 벡터(vector)를 정렬하는 가장 일반적이고 간편한 방법은 std::sort() 함수를 사용하는 것입니다. 이 함수는 <algorithm> 헤더에 정의되어 있으며, 별도의 조건을 지정하지 않으면 요소들을 오름차순으로 정렬합니다.
만약 정렬 과정에서 값이 같은 요소들의 원래 상대적 순서를 유지해야 한다면 std::stable_sort()를 사용하면 됩니다. 이 함수는 sort()와 거의 동일하게 동작하지만, 동일한 값을 가진 요소들 사이의 기존 순서를 보장한다는 점이 다릅니다. 그 외에도 요구 사항에 따라 퀵소트(Quicksort), 머지소트(Mergesort)와 같은 정렬 알고리즘을 직접 구현하여 사용할 수 있습니다.
알고리즘
시작
벡터 타입의 변수 v를 선언한다.
배열 형태로 v에 초기값을 넣는다.
"정렬 전 요소"라는 문장을 출력한다.
for (const auto &i : v)
변수 i의 모든 값을 출력한다.
"정렬 후 요소"라는 문장을 출력한다.
sort(v.begin(), v.end()) 함수를 호출하여 v 벡터의 모든 요소를 정렬한다.
for (const auto &i : v)
변수 i의 모든 값을 출력한다.
종료
sort() 함수는 정렬할 범위의 시작 반복자(v.begin())와 끝 반복자(v.end())를 인자로 받습니다. 내림차순으로 정렬하고 싶다면 세 번째 인자로 greater<int>()와 같은 비교 함수를 전달하면 됩니다.
다음은 C++에서 벡터를 정렬하는 간단한 예제 코드입니다.
예제 코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = { 10, 9, 8, 6, 7, 2, 5, 1 };
cout << "Elements before sorting" << endl;
for (const auto &i : v)
cout << i << ' ' << endl;
cout << "Elements after sorting" << endl;
sort(v.begin(), v.end());
for (const auto &i : v)
cout << i << ' ' << endl;
return 0;
}
실행 결과
Elements before sorting
10
9
8
6
7
2
5
1
Elements after sorting
1
2
5
6
7
8
9
10
위 예제에서 볼 수 있듯이, sort(v.begin(), v.end()) 호출 한 줄만으로 벡터의 모든 요소가 오름차순으로 깔끔하게 정렬됩니다. 범위 기반 for문(range-based for loop)을 활용하면 정렬 전후의 요소를 손쉽게 출력하여 결과를 확인할 수 있습니다.