Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Сортировка элементов
Для сортировки элементов предназначены следующие функции:
sort()
— сортирует элементы внутри указанного диапазона:
// #include <algorithm>
std::vector<int> arr = {4, 5, 3, 2, 6, 1};
std::sort(arr.begin(), arr.end());
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 1 2 3 4 5 6
По умолчанию сравнение производится с помощью оператора <
. В третьем параметре можно указать пользовательскую функцию сравнения. Выполним сортировку в обратном порядке:
std::vector<int> arr = {4, 5, 3, 2, 6, 1};
std::sort(arr.begin(), arr.end(),
[](const int &a, const int &b){ return a > b; });
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 6 5 4 3 2 1
stable_sort()
— сортирует элементы внутри указанного диапазона, при этом сохраняя порядок следования элементов с одинаковыми значениями:
// #include <algorithm>
std::vector<int> arr = {4, 5, 3, 2, 6, 1};
std::stable_sort(arr.begin(), arr.end());
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 1 2 3 4 5 6
По умолчанию сравнение производится с помощью оператора <
. В третьем параметре можно указать пользовательскую функцию сравнения. Выполним сортировку в обратном порядке:
std::vector<int> arr = {4, 5, 3, 2, 6, 1};
std::stable_sort(arr.begin(), arr.end(),
[](const int &a, const int &b){ return a > b; });
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 6 5 4 3 2 1
is_sorted()
— возвращает значениеtrue
, если диапазон отсортирован, иfalse
— в противном случае. По умолчанию сравнение производится с помощью оператора<
. В последнем параметре можно указать пользовательскую функцию сравнения. Формат функции:
#include <algorithm>
bool is_sorted(first, last[, comp]);
Пример:
std::vector<int> arr = {4, 5, 3, 2, 6, 1, 8, 7};
std::cout << std::boolalpha;
std::cout << std::is_sorted(arr.begin(), arr.end())
<< std::endl; // false
std::sort(arr.begin(), arr.end());
std::cout << std::is_sorted(arr.begin(), arr.end())
<< std::endl; // true
is_sorted_until()
— возвращает итератор на первый элемент из диапазона междуfirst
иlast
, который не следует в порядке возрастания. Если диапазон отсортирован, то функция возвращает итераторlast
. По умолчанию сравнение производится с помощью оператора<
. В последнем параметре можно указать пользовательскую функцию сравнения. Формат функции:
#include <algorithm>
iterator is_sorted_until(first, last[, comp]);
Пример:
std::vector<int> arr = {1, 2, 3, 5, 4, 6, 8, 7};
auto it = std::is_sorted_until(arr.begin(), arr.end());
if (it != arr.end()) {
std::cout << *it << std::endl; // 4
}
std::sort(arr.begin(), arr.end());
it = std::is_sorted_until(arr.begin(), arr.end());
if (it == arr.end()) {
std::cout << "sort" << std::endl; // sort
}
partial_sort()
— выполняет частичную сортировку элементов из диапазона между позициями, заданными с помощью итераторовfirst
иlast
. Элементы от начальной позиции и до позицииmiddle
будут следовать в порядке возрастания значений из диапазона, а оставшиеся элементы — в произвольном порядке. Формат функции:
#include <algorithm>
void partial_sort(first, middle, last[, comp]);
Пример:
std::vector<int> arr = {4, 5, 3, 2, 6, 1, 8, 7};
std::partial_sort(arr.begin(), arr.begin() + 4, arr.end());
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 1 2 3 4 6 5 8 7
По умолчанию сравнение производится с помощью оператора <
. В последнем параметре можно указать пользовательскую функцию сравнения. Выполним частичную сортировку в обратном порядке:
std::vector<int> arr = {4, 5, 3, 2, 6, 1, 8, 7};
std::partial_sort(arr.begin(), arr.begin() + 4, arr.end(),
[](const int &a, const int &b){ return a > b; });
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 8 7 6 5 2 1 3 4
partial_sort_copy()
— выполняет частичную сортировку элементов из диапазона междуfirst
иlast
, при этом не изменяя порядок следования в исходном контейнере. Отсортированные копии элементов записывается в диапазон между позициями, заданными с помощью итераторовresult_first
иresult_last
. Формат функции:
#include <algorithm>
iterator partial_sort_copy(first, last,
result_first, result_last[, comp]);
Пример:
std::vector<int> arr = {4, 5, 3, 2, 6, 1, 8, 7}, arr2(4, 0);
std::partial_sort_copy(arr.begin(), arr.end(),
arr2.begin(), arr2.end());
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 4 5 3 2 6 1 8 7
for (int &el : arr2) std::cout << el << ' ';
std::cout << std::endl; // 1 2 3 4
По умолчанию сравнение производится с помощью оператора <
. В последнем параметре можно указать пользовательскую функцию сравнения. Выполним частичную сортировку в обратном порядке:
std::vector<int> arr = {4, 5, 3, 2, 6, 1, 8, 7}, arr2(4, 0);
std::partial_sort_copy(arr.begin(), arr.end(),
arr2.begin(), arr2.end(),
[](const int &a, const int &b){ return a > b; });
for (int &el : arr2) std::cout << el << ' ';
std::cout << std::endl; // 8 7 6 5
Реквизиты
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов