Pagini recente » Cod sursa (job #2449394) | Cod sursa (job #2749314) | Cod sursa (job #2449363) | Cod sursa (job #2522633) | Cod sursa (job #2512106)
#include <iterator>
#include <algorithm> // for std::inplace_merge
#include <functional> // for std::less
template<typename RandomAccessIterator, typename Order>
void mergesort(RandomAccessIterator first, RandomAccessIterator last, Order order)
{
if (last - first > 1)
{
RandomAccessIterator middle = first + (last - first) / 2;
mergesort(first, middle, order);
mergesort(middle, last, order);
std::inplace_merge(first, middle, last, order);
}
}
template<typename RandomAccessIterator>
void mergesort(RandomAccessIterator first, RandomAccessIterator last)
{
mergesort(first, last, std::less<typename std::iterator_traits<RandomAccessIterator>::value_type>());
}
int main(){
int a[500000],n,i;
std::ifstream fin("algsort.in");
std::ofstream fout("algsort.out");
fin>>n;for(i=0;i<n;i++)fin>>a[i];
mergesort(a,a+n);
for(i=0;i<n;i++)
fout << a[i]<< " ";
return 0;
}