2 #ifndef _PARALLEL_SORT_H
3 #define _PARALLEL_SORT_H
10 namespace mutithreaded {
12 template<
typename RandomAccessIter>
13 void merge_sort(RandomAccessIter first, RandomAccessIter last) {
15 const int min_size = 1000000;
17 int sz = last - first;
21 std::vector<typename RandomAccessIter::value_type> subarr1(first, first + sz / 2);
25 if(subarr1.size() > min_size)
26 left = std::thread(merge_sort<RandomAccessIter>, subarr1.begin(), subarr1.end());
31 std::vector<typename RandomAccessIter::value_type> subarr2(first + sz / 2, last);
37 std::merge(subarr1.begin(), subarr1.end(), subarr2.begin(), subarr2.end(), first);
void merge_sort(RandomAccessIter first, RandomAccessIter last)
Definition: parallel_sort.h:13