본문 바로가기
프로그래밍 언어/C++

STL 알고리즘 - 정렬(sort, stable_sort, partial_sort)

by Nighthom 2023. 2. 14.

sort, stable_sort, partial_sort는 <algorithm> 헤더파일에 정의되어 있다.

 

1. 사용 방법

1) sort

sort(vec.begin(), vec.end());		// 첫 인자의 이터레이터부터 끝 인자의 이터레이터까지 
					// 정렬을 수행. 연산자 <를 활용해서 정렬한다.
sort(vec.begin(), vec.end(), cmp());	// 비교 기준에 대한 함수 객체 전달.

sort로 정렬할 데이터의 이터레이터는 반드시 RandomAccessIterator이어야 한다. (BidirectionalIterator의 경우 사용 불가) 기본적으로 <를 활용해서 정렬하기에 오름차순 정렬이라고 할 수 있다. 

 

내림차순으로 정렬하고 싶으면 greater<type>이라는 미리 정의된 함수 객체를 비교 기준으로 전달하면 된다. 

std::sort(vec.begin(), vec.end(), greater<int>());

2) partial_sort

해당 함수는 부분적인 정렬을 수행한다.

std::partial_sort(vec.begin(), vec.begin() + 3, vec.end());

위와 같이 사용하면 vec.begin()부터 vec.begin() + 3까지만 정렬을 수행하고, 그 이후 vec.end()까지는 정렬되지 않은 값이 오게 된다.

3) stable_sort

stable_sort의 경우 sort와는 다르게 정렬을 수행했을 때 삽입된 순서를 지켜서 정렬해준다.

std::stable_sort(vec.begin(), vec.end());

 

댓글