Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <iostream>
- #include <numeric>
- #include <vector>
- using namespace std;
- template <typename It>
- void PrintRangeComma(It range_begin, It range_end) {
- if (range_begin == range_end) {
- return;
- }
- for (auto it = range_begin;;) {
- cout << *it;
- if (++it == range_end) {
- break;
- }
- else {
- cout << ", "s;
- }
- }
- cout << endl;
- }
- template <typename RandomIt>
- void MergeSort(RandomIt range_begin, RandomIt range_end) {
- auto range_length = range_end - range_begin;
- if (range_length < 2) {
- return;
- }
- vector<typename RandomIt::value_type> elements(range_begin, range_end);
- auto mid = elements.begin() + range_length / 2;
- MergeSort(elements.begin(), mid);
- MergeSort(mid, elements.end());
- merge(elements.begin(), mid, mid, elements.end(), range_begin);
- }
- int main() {
- vector<int> test_vector(10);
- iota(test_vector.begin(), test_vector.end(), 1);
- random_shuffle(test_vector.begin(), test_vector.end());
- PrintRangeComma(test_vector.begin(), test_vector.end());
- MergeSort(test_vector.begin(), test_vector.end());
- PrintRangeComma(test_vector.begin(), test_vector.end());
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment