Как написать сортировку слиянием через рекурсию?(c++)

    template <typename RandomIt>
void MergeSort(RandomIt range_begin, RandomIt range_end) {
    if (range_end- range_begin < 2) {
        return;
    }
    vector<typename RandomIt::value_type> elements(range_begin, range_end);

    auto it = elements.begin() + distance(elements.begin(), elements.end()) / 2;

    vector<typename RandomIt::value_type> v3;
    MergeSort(elements.begin(), it);
    MergeSort(it, elements.end());
    merge(elements.begin(),it,it,elements.end(),back_inserter(v3));

} 

При сборке высвечивается ошибка,что при вызове merge последовательность не отсортирована.Как это исправить?


Ответы (0 шт):