Функция partial_sort
Функция partial_sort выполняет частичную сортировку диапазона.
Она переставляет элементы так, что первые N элементов
оказываются наименьшими во всём диапазоне и при этом упорядоченными
по возрастанию. Остальные элементы после позиции N остаются
в неопределённом порядке. В первый параметр мы передаём итератор
начала диапазона, во второй - итератор, задающий позицию, до которой
нужно отсортировать элементы, а в третий - итератор конца диапазона.
Четвёртым необязательным параметром можно передать функцию сравнения.
Синтаксис
partial_sort(first, middle, last)
partial_sort(first, middle, last, comp)
Пример
Давайте отсортируем первые 3 элемента вектора,
чтобы они стали наименьшими и упорядоченными по возрастанию:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec = {5, 3, 1, 4, 2};
partial_sort(vec.begin(), vec.begin() + 3, vec.end());
for (int el : vec) {
cout << el << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 5 4
Пример
Давайте отсортируем весь вектор, передав в качестве второго параметра итератор конца:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec = {5, 3, 1, 4, 2};
partial_sort(vec.begin(), vec.end(), vec.end());
for (int el : vec) {
cout << el << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте отсортируем первые 3 элемента вектора
по убыванию, передав функцию сравнения greater:
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
int main()
{
vector<int> vec = {5, 3, 1, 4, 2};
partial_sort(vec.begin(), vec.begin() + 3, vec.end(), greater<int>());
for (int el : vec) {
cout << el << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
5 4 3 1 2
Смотрите также
-
функция
sort,
которая сортирует весь диапазон -
функция
stable_sort,
которая устойчиво сортирует весь диапазон -
функция
nth_element,
которая ставит N-й элемент на своё место -
функция
is_sorted,
которая проверяет, отсортирован ли диапазон