정렬 공부를 하다가 문득 궁금해졌는데 매번 코딩 테스트에선 정렬 알고리즘을 사용해야하나 싶었다.
결론부터 말하면 아니다. 퀵 정렬처럼 제일 빠른 정렬을 사용해야될 것 같은 맘에 문제들을 풀때 직접 함수를 만들어 정렬해왔는데 <algorithm> 헤더 파일에 있는 STL Sort 라이브러리를 사용하면 되더라.
O(NlogN)의 시간 복잡도를 가지기 때문이다.
입력의 크기가 커질 경우 효율적으로 정렬하기 위해 진화된 정렬 방식을 사용하는데 Sort() 함수는 이에 최적화 되어있다.
#include <iostream>
#include <algorithm>
using namespace std;
int main(void){
int arr[10] = {6, 2, 9, 8, 7, 1, 4, 5, 3, 10};
// 정렬
// 첫번째 인자 = 배열의 포인터
// 두번째 인자 = 배열의 포인터 + 배열의 크기
sort(arr, arr+10);
for(int i=0; i<10; i++)
cout << arr[i] << ' ';
return 0;
}
sort(arr, arr+10);
배열의 이름, 배열의 이름 + 크기
배열이 아닌 벡터인 경우에는
sort(arr.begin(), arr.end());
begin(), end() 함수를 이용해 주면 된다.
내림차순으로 정렬하고 싶을때는
sort(arr, arr+10, desc);
마지막에 desc를 추가하고
크기를 비교해주는 간단한 desc 함수를 따로 만들어주자.
아니면
sort(arr, arr+10, greater<>());
사용 가능
'개인공부(c++)' 카테고리의 다른 글
[C/C++] 그리디 알고리즘 문제풀이 1 (0) | 2022.09.29 |
---|---|
[C/C++]백준 4796_캠프, 그리디 알고리즘 (0) | 2022.09.27 |
[c/c++] 백준 1978_소수 찾기 (1) | 2022.09.20 |
[c/c++] 백준 10757_큰수 A+B (1) | 2022.09.16 |