Untitled

                Never    
C++
       
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
#include <iterator>
 
using namespace std;
 
template<class RandomIt>
void MergeSort(RandomIt range_begin, RandomIt range_end) {
    if (range_end - range_begin < 2) {
        return;
    }
    using VT = typename RandomIt::value_type;
    vector<VT> elements(range_begin, range_end);
 
    auto border = elements.begin() + elements.size() / 2;
 
    vector<VT> part1(elements.begin(), border);
    vector<VT> part2(border, elements.end());
 
    MergeSort(part1.begin(), part1.end());
    MergeSort(part2.begin(), part2.end());
 
    merge(part1.begin(), part1.end(), part2.begin(), part2.end(), range_begin);
}
 
int main() {
    vector<int> v = {6, 4, 7, 6, 4, 4, 0, 1};
    MergeSort(begin(v), end(v));
    for (int x : v) {
        cout << x << " ";
    }
    cout << endl;
    return 0;
}

Raw Text