Nu aveti permisiuni pentru a descarca fisierul grader_test5.ok
Cod sursa(job #1010656)
Utilizator | Data | 15 octombrie 2013 13:16:01 | |
---|---|---|---|
Problema | Sortare prin comparare | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.77 kb |
#include<fstream>
using namespace std;
long v[500001], b[500001];
void interclaseaza(long v[],long st,long m,long dr)
{long nr=0,i,j;
i=st;j=m+1;
while(i<=m&&j<=dr)
{if(v[i]<v[j])
{b[++nr]=v[i];i++;}
else
{b[++nr]=v[j];j++;}
}
while(i<=m)
{b[++nr]=v[i];i++;}
while(j<=dr)
{b[++nr]=v[j];j++;}
j = 1;
for(i=st;i<=dr;i++, j++)
v[i]=b[j];
}
void marge(long v[],long st,long dr)
{long m;
if (st == dr)
return;
m=(st+dr)/2;
marge(v,st,m);
marge(v,m+1,dr);
interclaseaza(v,st,m,dr);
}
int main()
{long n, i;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
marge(v,1,n);
for(i=1;i<=n;i++)
g<<v[i]<<" ";
f.close();g.close();
return 0;
}