C++에서 벡터(vector)를 정렬하려면 std::sort() 함수를 사용할 수 있습니다. 이 함수는 <algorithm> 헤더에 정의되어 있습니다. 동일한 값을 가진 요소들의 상대적인 순서를 유지하는 안정 정렬(stable sort)이 필요하다면 std::stable_sort를 사용하면 됩니다. 이 함수는 sort()와 동일하게 작동하지만, 값이 같은 요소들 간의 원래 순서를 보존한다는 점이 다릅니다. 또한 필요에 따라 퀵정렬(quicksort)이나 병합정렬(mergesort)을 직접 구현하여 사용할 수도 있습니다.
벡터를 내림차순으로 정렬하려면 std::greater<>() 함수자(functor)를 활용하면 됩니다.
알고리즘
시작
vector 타입의 v를 선언한다.
배열 형태로 v에 초기값들을 넣는다.
"정렬 전 요소"를 출력한다.
for (const auto &i: v)
변수 i의 모든 값을 출력한다.
"정렬 후 요소"를 출력한다.
sort(v.begin(), v.end(), greater<>()) 함수를 호출하여
v 벡터의 모든 요소를 내림차순으로 정렬한다.
for (const auto &i: v)
변수 i의 모든 값을 출력한다.
끝.다음은 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(), greater<>());
for (const auto &i: v)
cout << i << ' '<<endl;
return 0;
}실행 결과
Elements before sorting 10 9 8 6 7 2 5 1 Elements after sorting 10 9 8 7 6 5 2 1
위 예제에서 볼 수 있듯이, sort() 함수의 세 번째 인자로 greater<>()를 전달하면 기본 오름차순 대신 내림차순으로 요소들이 정렬됩니다. greater<>()는 C++14부터 타입 인자를 생략할 수 있으며, 그 이전 버전에서는 greater<int>()처럼 비교할 타입을 명시해야 합니다.