Pagini recente » Cod sursa (job #2196380) | Cod sursa (job #688739) | Cod sursa (job #1722240) | Cod sursa (job #1617194) | Cod sursa (job #1347882)
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int n, v[500005];
int a[500005];
void interclasare ( int x[], int s, int p, int d)
{
int i,j,nr;
i = s;
j = p+1;
nr = 0;
while ( i <= p && j <= d)
if (x[i]<=x[j])
{
a[nr]=x[i];
nr++;
i++;
}
else
{
a[nr]=x[j];
nr++;
j++;
}
while ( i <= p)
{
a[nr]=x[i];
nr++;
i++;
}
while ( j <= d)
{
a[nr]=x[j];
nr++;
j++;
}
for (i = 0; i < nr; i++)
x[i+s] = a[i];
}
void mergesort ( int b[], int st, int dr)
{
if (st == dr)
return;
int mij = (st + dr)/2;
mergesort (b,st, mij);
mergesort (b,mij+1, dr);
interclasare(b,st,mij,dr);
}
int main()
{
fin>>n;
int i;
for (i = 0; i < n; i++)
fin>>v[i];
fin.close();
mergesort(v,0,n-1);
for (i = 0; i < n; i++)
fout<<v[i]<<" ";
fout<<'\n';
fout.close();
return 0;
}