본문 바로가기
C++ 코딩 정리/C++ STL

[C++ STL] sort 를 통해 정렬해보자.

by $# 2020. 3. 26.

WHAT? SORT

C++ STL에 있는 sort는 sort(start, end) 와 같이 간단한 코드로 정렬을 할 수있게 해준다.

퀵 정렬을 기반으로 이루고 있어, 평균 시간복잡도 또한 nlogn으로 빠른 정렬 속도를 보여주고 있다.

 

우리는 코딩 문제를 풀면서 정렬 하는 문제를 최소한 하나 정도는 만났을 것이다.

실제 대회에서 정렬 하는 함수 구현하는 것은 시간면에서도 매우 불리한 상황이 될 수있으니, 이번 시간을 통해 c++ stl 에서 제공하는 sort를 제대로 배워보자.

 

기본적인 sort 구문은 오름차순으로 정렬하니, 참고하기 바란다.


HOW? USE!

STL에서 제공하는 만큼 대체적으로 사용하기 쉽다.

sort(start, end);

이거면 끝이다.

 

나는 지금부터 두 가지 경우에서 사용하는 방법을 설명할 것이다.

 

첫번째는 일반적인 배열에서, 두번째는 벡터로 정렬하는 법으로 진행하겠다.

 

1) 일반적인 배열에서 SORT 사용

sort( arr, arr+n );

arr+n 에서의 n은 몇 번째 원소까지 정렬을 하는 지에 대한 명시이다.

 

1-1)예시 소스코드

 

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
	int arr[3];
	for(int i=0; i<3; i++)
		cin >> arr[i];
	sort(arr,arr+3);
	for(int i=0; i<3; i++)
		cout << arr[i] << '\n';
}

 

2) 벡터에서 SORT 사용

sort( arr.begin(), arr.end() );

arr.begin()은 벡터 arr의 시작, arr.end() 는 벡터 arr의 끝이다.

따라서 시작부터 끝까지 다 정렬하라는 의미이다.

 

2-1)예시 소스코드

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
	vector<int> arr;
	for(int i=0; i<3; i++){
		int a; cin >> a;
		arr.push_back(a);
	}
	sort(arr.begin(), arr.end());
	for(int i=0; i<arr.size(); i++)
		cout << arr[i] << '\n';
}

sort는 정렬할 때 정말 많이 사용되고, 유용한 C++ STL이니 사용법을 익히는 것을 추천한다.

댓글