Pagini recente » Cod sursa (job #1076297) | Cod sursa (job #3165517) | Cod sursa (job #1643842) | Cod sursa (job #278161) | Cod sursa (job #1399511)
#include <iostream>
#include <fstream>
#define DN 500005
using namespace std;
int v[DN],n;
int tmp[DN];
void read(){
ifstream f("algsort.in");
f>>n;
for(int i=1;i<=n;++i)
f>>v[i];
}
void usort(int v[],int left,int right){
int mij = (left+right)/2;
if(left == right)
return;
usort(v,left,mij);
usort(v,mij+1,right);
tmp[0] = 0;
int ii = left,jj = mij+1;
while( ii <= mij and jj <= right){
if(v[ii] <= v[jj])
tmp[++tmp[0]] = v[ii++];
else
tmp[++tmp[0]] = v[jj++];
}
while( ii <= mij) tmp[++tmp[0]] = v[ii++];
while( jj <= right) tmp[++tmp[0]] = v[jj++];
/*cout<<"L:"<<left<<" | R:"<<right<<" | Mij:"<<mij<<endl;
for(int i=1;i<=tmp[0];++i)
cout<<tmp[i]<<" " ;*/
for(int i=1;i<=tmp[0];++i)
v[ left + i - 1 ] = tmp[i];
}
void uprint(){
ofstream g("algsort.out");
for(int i=1;i<=n;++i)
g<<v[i]<<" ";
}
int main()
{
read();
usort(v,1,n);
uprint();
return 0;
}