Pagini recente » Cod sursa (job #1557958) | Cod sursa (job #769376) | Cod sursa (job #48141) | Cod sursa (job #2686138) | Cod sursa (job #664933)
Cod sursa(job #664933)
#include <cstdio>
#include <vector>
#define NMAX 500005
using namespace std;
vector<int> v2;
int v[NMAX],n;
void read()
{
freopen("algsort.in","r", stdin);
freopen("algsort.out","w", stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&v[i]);
}
void solve(int left,int right)
{
if(right<=left)
{
return;
}
int mid=(left+right)/2;
solve(left,mid);
solve(mid+1,right);
int a1=left,b1=mid,a2=mid+1,b2=right;
while(a1<=b1 && a2<=b2)
{
if(v[a1]<v[a2])
{
v2.push_back(v[a1]);
a1++;
}
else
{
v2.push_back(v[a2]);
a2++;
}
}
while(a1<=b1)
{
v2.push_back(v[a1]);
a1++;
}
while(a2<=b2)
{
v2.push_back(v[a2]);
a2++;
}
for(unsigned int i=0;i<v2.size();i++)
{
v[left+i]=v2[i];
}
v2.clear();
}
void print()
{
for(int i=1;i<=n;i++) printf("%d ",v[i]);
}
int main()
{
read();
solve(1,n);
print();
return 0;
}