AlgoPlus v0.1.0
Loading...
Searching...
No Matches
merge_sort.h
1#ifndef MERGE_SORT_H
2#define MERGE_SORT_H
3
4#include <algorithm> // Required for std::inplace_merge
5#include <iostream>
6#include <vector>
7
19template <typename Iter> void merge_sort(Iter begin, Iter end) {
20 if (end - begin > 1) {
21 Iter mid = begin + (end - begin) / 2; // Assumes Random Access Iterator
22 merge_sort(begin, mid);
23 merge_sort(mid, end);
24 std::inplace_merge(begin, mid,
25 end); // Elements must be comparable and move-assignable
26 }
27}
28
29#endif // MERGE_SORT_H