Pagini recente » infoarena 2 | Rating Gheorghe Stefan (poky) | Cod sursa (job #3040105) | Cod sursa (job #3122422) | Cod sursa (job #559001)
Cod sursa(job #559001)
#include <fstream>
using namespace std;
int a[500001];
int aux[500001];
int n, i, j;
void MergeSort(int st, int dr);
int main()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin >> n;
for ( i = 1; i <= n; i++ )
fin >> a[i];
MergeSort(1, n);
for (int i = 1; i < n; i++ )
fout << a[i] << " ";
fout << a[n] << "\n";
return 0;
}
void MergeSort(int st, int dr)
{
if ( st == dr ) return;
int mid = st + (dr-st)/2;
MergeSort(st, mid), MergeSort(mid+1, dr);
int v1 = st, v2 = mid+1, v = st;
while ( v1 <= mid || v2 <= dr )
{
if ( v2 > dr || a[v1] < a[v2] ) aux[v] = a[v1], v++, v1++;
else aux[v] = a[v2], v++, v2++;
}
for ( i = st; i <= dr; i++ )
a[i] = aux[i];
}