Pagini recente » Cod sursa (job #337458) | Cod sursa (job #2923983) | Cod sursa (job #2734809) | Cod sursa (job #185037) | Cod sursa (job #1020807)
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
long a[500001],b[500001],n;
void interclasare(long left,long mid,long right)
{long i=left,j=mid+1,k=left;
while(i<=mid&&j<=right)
{if(a[i]<a[j])
{b[k]=a[i];i++;}
else
if(a[i]>a[j])
{b[k]=a[j];j++;}
else
{b[k++]=a[i];b[k]=a[j];i++;j++;}
k++;
}
while(i<=mid)
{b[k]=a[i];i++;}
while(j<=right)
{b[k]=a[j];j++;}
for(i=left;i<=right;i++)
a[i]=b[i];
}
void msort(long st,long dr)
{long m;
m=(st+dr)/2;
if(st<dr)
{msort(st,m);
msort(m+1,dr);
}
interclasare(st,m,dr);
}
int main()
{long i;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
msort(1,n);
for(i=1;i<=n;i++)
g<<a[i]<<" ";
f.close();g.close();
return 0;
}