Pagini recente » Cod sursa (job #2767090) | Cod sursa (job #1820234) | Cod sursa (job #2554014) | Cod sursa (job #902619) | Cod sursa (job #1516224)
#include<fstream>
using namespace std;
int n,a[1000000],b[500001];
void interclasare(int i, int m, int j)
{
int x=i,k=0,y=m+1;
while(x<=m && y<=j)
if(a[x]<a[y])
b[++k]=a[x++];
else
b[++k]=a[y++];
while(x<=m)
b[++k]=a[x++];
while(y<=j)
b[++k]=a[y++];
int t=i;
for(int p=1;p<=k;p++)
a[t++]=b[p];
}
void divideetimpera(int i, int j)
{
if(i<j){
int m=(i+j)/2;
divideetimpera(i,m);
divideetimpera(m+1,j);
interclasare(i,m,j);
}
}
int main(){
ifstream in("algsort.in");
ofstream out("algsort.out");
in>>n;
for(int i=1;i<=n;i++)
in>>a[i];
divideetimpera(1,n);
for(int i=1;i<=n;i++)
out<<a[i]<<' ';
in.close();
out.close();
return 0;
}