PartialSort
범위 내의 지정된 수의 작은 요소들을 오름차순으로, 또는 이항 술어에 의해 지정된 순서 기준에 따라 정렬합니다.
template <class Ran>
void PartialSort (
Ran first,
Ran mid,
Ran last
);
template <class Ran, class BinPred>
void PartialSort (
Ran first,
Ran mid,
Ran last,
BinPred pred
);
Template 파라미터
- Ran
-
랜덤 접근 반복자입니다.
- BinPred
-
이항 술어(Binary predicate)입니다.
파라미터
- first
-
정렬될 범위의 1번째 요소의 위치를 설명하는 랜덤 접근 반복자입니다.
- mid
-
정렬될 하위 범위의 마지막 직전 요소의 위치를 설명하는 랜덤 접근 반복자입니다.
- last
-
부분적으로 정렬될 범위의 마지막 직전 요소의 위치를 설명하는 랜덤 접근 반복자입니다.
- pred
-
순서 상으로 요소들이 연속적이라는 조건을 만족하는 비교 기준을 정의하는 사용자 정의 술어 함수 객체입니다.
이항 술어(binary predicate)를 2개의 인자들을 취하며 만족할 때에는 true를, 만족하지 않을 때에는 false를 리턴합니다.
설명
PartialSort는 범위 [first, last)에 있는 요소들을 재정렬합니다. 그래서 이 요소들은 부분적으로 오름차순이 됩니다.
구체적으로 이것은 오름차순으로 정렬된 가장 작은 mid - first 요소들을 범위 [first, mid)에 넣습니다.
나머지 last - mid 요소들은 정렬되지 않은 대로 범위 [mid, last)에 넣습니다.
PartialSort의 2가지 버전들은 어떤 요소가 다른 요소보다 작다는 것을 정의하는 점에서 다릅니다.
1번째 버전은 operator<를 사용하여 객체들을 비교하고, 2번째 버전은 술어 pred를 사용하여 객체들을 비교합니다.
PartialSort의 1번째 버전에 대한 후조건은 다음과 같습니다.
만약 범위 [first, mid) 안에 유효한 2개의 반복자 i와 j가 있을 때, i가 j보다 앞서고
k가 범위 [mid, last)에서 유효한 반복자라면, *j < *i와 *k < *i는 둘 다 false가 될 것입니다.
PartialSort의 2번째 버전의 후조건에 해당하는 내용은 pred(*j, *i)와 pred(*k, *i) 모두 false입니다.
비공식적으로 이 후조건은 다음을 의미합니다: 처음 mid - first 요소들은 오름차순으로 정렬되어 있으며 [mid, last)의 요소들 중에서 [first, mid)에 있는 요소들보다 작은 것은 하나도 없습니다.
참고사항
알고리즘