Pagini recente » Cod sursa (job #433189) | Cod sursa (job #1399146) | Cod sursa (job #2112373) | Cod sursa (job #66348) | Cod sursa (job #1103951)
#include <fstream>
using namespace std;
const int NMax = 500010;
int n;
int a[NMax];
int aux[NMax];
inline void MergeSort(const int st, const int dr)
{
if (dr - st + 1 == 1)
return;
if (dr - st + 1 == 2)
{
if (a[st] > a[dr])
swap(a[st], a[dr]);
return ;
}
int mij = (st+dr) >> 1;
MergeSort(st, mij);
MergeSort(mij+1, dr);
int i = st, j = mij + 1;
int ind = 0;
while (i <= mij && j <= dr)
if (a[i] < a[j])
aux[++ind] = a[i++];
else
aux[++ind] = a[j++];
while (i <= mij)
aux[++ind] = a[i++];
while (j <= dr)
aux[++ind] = a[j++];
for (i = st, j = 1; i <= dr; ++i, ++j)
a[i] = aux[j];
}
int main()
{
ifstream f ("algsort.in");
f>>n;
for (int i = 1; i<=n; ++i)
f>>a[i];
f.close();
MergeSort(1, n);
ofstream g ("algsort.out");
for (int i = 1; i<=n; ++i)
g<<a[i]<<" ";
g<<"\n";
g.close();
return 0;
}