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

C++에서 벡터 정렬하는 방법 – std::sort() 사용법과 예제

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)을 활용하면 정렬 전후의 요소를 손쉽게 출력하여 결과를 확인할 수 있습니다.