Слияние на месте в C++
Алгоритм inplace_merge сливает два отсортированных
фрагмента одного массива или вектора в один блок.
Средний итератор отделяет левую и правую части. После вызова весь диапазон остается отсортированным на месте без дополнительного буфера. Запишем вектор и выведем его целиком:
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> data = {1, 3, 2, 4};
std::inplace_merge(data.begin(), data.begin() + 2, data.end());
for (int v : data) {
std::cout << v << " ";
}
std::cout << "\n";
return 0;
}
В векторе {10, 20, 5, 15} первые два и последние два элемента уже отсортированы; выполните inplace_merge и выведите результат.