Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <iterator>
- #include <algorithm>
- #include <numeric>
- using namespace std;
- template <typename It>
- void PrintRange(It range_begin, It range_end) {
- for (auto it = range_begin; it != range_end; ++it) {
- cout << *it << " "s;
- }
- cout << endl;
- }
- template <typename RandomIt>
- void MergeSort(RandomIt range_begin, RandomIt range_end){
- if (next(range_begin) == range_end){
- return;
- }
- vector<typename RandomIt::value_type> elements(range_begin, range_end);
- auto middleof = elements.begin()+ (elements.size()/2);
- MergeSort(elements.begin(), middleof);
- MergeSort(middleof, elements.end());
- vector<typename RandomIt::value_type> v;
- merge(elements.begin(), middleof, middleof, elements.end(), back_inserter(v));
- swap_ranges(range_begin, range_end, begin(v));
- }
- 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;
- }
Advertisement
Add Comment
Please, Sign In to add comment