Pagini recente » Cod sursa (job #2860732) | Cod sursa (job #95005) | Cod sursa (job #147771) | Cod sursa (job #1718833) | Cod sursa (job #2154174)
#include <iostream>
#include <fstream>
#define nmax 500001
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,a[nmax];
void read()
{
fin>>n;
for(int i =0 ; i < n ; i++)
fin>>a[i];
}
void foundSolution(int p, int m, int q)
{
int i=p,j=m+1,k=0;
int b[101];
while(i<=m && j <=q)
{
if(a[i]<a[j]) b[k++]=a[i++];
else b[k++]=a[j++];
}
while(i<=m) b[k++]=a[i++];
while(j<=q) b[k++]=a[j++];
for(int i = p ; i <= q; i ++)
a[i]=b[i-p];
}
void mergeSort(int p, int q)
{
if(q>p)
{
int m=(p+q)/2;
mergeSort(p,m);
mergeSort(m+1,q);
foundSolution(p,m,q);
}
}
void write()
{
for(int i = 0 ; i < n ; i++)
fout<<a[i]<<" ";
}
int main()
{
read();
mergeSort(0,n-1);
write();
return 0;
}