Pagini recente » Cod sursa (job #668551) | Cod sursa (job #3237582) | Cod sursa (job #3169579) | Cod sursa (job #1530773) | Cod sursa (job #633763)
Cod sursa(job #633763)
#include<fstream>
#define nmax 500001
using namespace std;
unsigned int n,a[nmax];
void citire()
{
ifstream fin("algsort.in");
fin>>n;
unsigned int i;
for(i=0;i<n;i++)
fin>>a[i];
fin.close();
}
void afisare()
{
ofstream fout("algsort.out");
unsigned int i;
for(i=0;i<n;i++)
fout<<a[i]<<" ";
fout.close();
}
void interclaseaza(unsigned int st,unsigned int mijl,unsigned int dr)
{
unsigned int i,j,nr,b[nmax];
for(i=st,j=mijl+1,nr=0;i<=mijl && j<=dr;nr++)
if(a[i]<a[j])
{
b[nr]=a[i];
i++;
}
else
{
b[nr]=a[j];
j++;
}
while(i<=mijl)
{
b[nr]=a[i];
i++;nr++;
}
while(j<=dr)
{
b[nr]=a[j];
j++;nr++;
}
for(i=0;i<nr;i++)
a[st+i]=b[i];
}
void sortare(unsigned int st,unsigned int dr)
{
if(st<dr)
{
unsigned int mijl=(st+dr)/2;
sortare(st,mijl);
sortare(mijl+1,dr);
interclaseaza(st,mijl,dr);
}
}
int main()
{
citire();
if(n>=1)
sortare(0,n-1);
afisare();
return 0;
}