Pagini recente » Cod sursa (job #344193) | Cod sursa (job #855610) | Cod sursa (job #1873737) | Cod sursa (job #550807) | Cod sursa (job #1281588)
#include <stdio.h>
#include <fstream>
#include <queue>
#include <vector>
#define Nmax 500001
using namespace std;
void mergeSort(int left, int right, int v[])
{
if(left >= right)
return;
int mid = (left + right)/2;
mergeSort(left, mid, v);
mergeSort(mid+1, right, v);
vector<int> sol;
int i,j;
for(i = left, j = mid+1; i <= mid && j <= right;)
{
if(v[i] <= v[j])
sol.push_back(v[i++]);
else
sol.push_back(v[j++]);
}
while(i <= mid)
sol.push_back(v[i++]);
while(j <= right)
sol.push_back(v[j++]);
for(i = left; i <= right; ++i)
v[i] = sol[i-left];
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int N, v[Nmax];
f>>N;
for(int i = 1;i <= N;++i)
f>>v[i];
f.close();
mergeSort(1, N, v);
for(int i=1;i<=N;++i)
g<<v[i]<<" ";
g.close();
return 0;
}