반응형
1. 언제 사용하는가?
정렬은 가장 기본적인 알고리즘임과 동시에 중요한 알고리즘이다.
하지만 그 구현이 쉽지 않고, 실제로 구현해서 사용하기에는 오류가 많기에
문제 하나 하나를 풀때마다 정렬을 코딩하는 것은 비현실적이다.
이를 위해, C++의 STL에서는 사용자가 빠르게 정렬할 수 있는 함수를 제공하는데, 이것이 'sort' 함수이다.
퀵소트를 기반으로 만들어졌다고 한다.
2. 사용 방법
다음과 같이, 'algorithm' 헤더를 include하여 사용한다.
vector를 정렬하는 방법과, 배열을 정렬하는 방법은 다르므로 사용법을 익혀야 한다.
기본적으로 vector는 begin와 end 지점을 명시해주며, 배열은 그 크기를 입력해주는 것으로 사용한다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void)
{
vector<int> v = {9, 7, 5, 3, 1};
sort(v.begin(), v.end());
int arr[5] = {9, 7, 5, 3, 1};
sort(arr, arr + 5);
return 0;
}
3. 내림차순 적용 방법
위의 sort는 디폴트로 오름차순을 적용한다.
즉, {9, 7, 5, 3, 1} 이 있었다면 이를 {1, 3, 5, 7, 9}로 정렬해준다.
하지만 내림차순이 필요할 때가 있는데, 이럴 때는 다음과 같이 bool 함수를 선언하고 이를 인자로 넣어주면 된다.
bool 함수의 기본형은 하기와 같이
bool 함수명 (int a, int b)
비교 대상 파라미터 2개를 넣어주고, bool 형을 반환하는 함수이면 된다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool desc(int a, int b)
{
return a > b;
}
int main(void)
{
vector<int> v = {9, 7, 5, 3, 1};
sort(v.begin(), v.end(), desc);
int arr[5] = {9, 7, 5, 3, 1};
sort(arr, arr + 5, desc);
return 0;
}
반응형
'Programming > C│C++' 카테고리의 다른 글
[C++] 원형 큐 (Circular Queue) 구현하기 (0) | 2021.03.10 |
---|---|
[C/C++] 배열 크기가 커서 강제종료된다면? (0) | 2020.08.02 |
[C++] string의 구분자(delimiter)를 이용한 파싱 처리하기 (0) | 2020.05.24 |
[C++/STL] 다차원 Vector 복사하기 (0) | 2020.04.16 |
[C++] C++로 eof 처리하기 (cin.eof() 사용법) (0) | 2019.12.07 |