Pagini recente » Cod sursa (job #2082561) | Cod sursa (job #1865075) | Cod sursa (job #1145758) | Cod sursa (job #2072111) | Cod sursa (job #1506921)
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int n,a[500001],temp[500001];
void interclasare(int a[],int temp[],int s,int m,int d)
{
int i=s;
int st=s,dr=m+1;
while(st<=m && dr<=d)
{
if(a[st]<=a[dr])
{
temp[i]=a[st];
st++;
i++;
}else {
temp[i]=a[dr];
dr++;
i++;
}
}
while(st<=m)
{
temp[i]=a[st];
st++;
i++;
}
while(dr<=d)
{
temp[i]=a[dr];
dr++;
i++;
}
for(i=1;i<=d;i++) a[i]=temp[i];
return;
}
void merge_sort(int a[],int temp[],int s,int d)
{
if(s==d) return;
int mij=(s+d)/2;
merge_sort(a,temp,s,mij);
merge_sort(a,temp,mij+1,d);
interclasare(a,temp,s,mij,d);
return;
}
int main()
{
int i,n;
in>>n;
for(i=1;i<=n;i++) in>>a[i];
merge_sort(a,temp,1,n);
for(i=1;i<=n;i++) out<<a[i]<<" ";
in.close();
out.close();
return 0;
}