Алгоритм partial_sort()
template < class RandomAccessIterator > void partial_sort( RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last ); template < class RandomAccessIterator, class Compare > void partial_sort( RandomAccessIterator first, RandomAccessIterator middle, |
RandomAccessIterator last, Compare comp );
partial_sort()
сортирует часть последовательности, укладывающуюся в диапазон [first,middle). Элементы в диапазоне [middle,last)
остаются неотсортированными. Например, если дан массив
int ia[] = {29,23,20,22,17,15,26,51,19,12,35,40};
то вызов partial_sort(),где middle
указывает на шестой элемент:
partial_sort( &ia[0], &ia[5], &ia[12] );
генерирует последовательность, в которой наименьшие пять (т.е. middle-first) элементов отсортированы:
{12,15,17,19,20,29,23,22,26,51,35,40}.
Элементы от middle до last-1 не расположены в каком-то определенном порядке, хотя значения каждого из них лежат вне отсортированной последовательности. В первом варианте для сравнения используется оператор “меньше”, определенный для типа элементов контейнера, а во втором – операция сравнения comp.