Pagini recente » Cod sursa (job #2874465) | Cod sursa (job #2454403) | Cod sursa (job #2964763) | Cod sursa (job #1413854) | Cod sursa (job #1794017)
#include <iostream>
#include <fstream>
#define dim2 500001
#define dim 250001
using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
void interclas(int a[], int i, int mij ,int j )
{
int n1, n2 , x , y , k;
n1 = mij - i + 1;
n2 = j - mij ;
int l[n1+1] , r[n2+1];
for(x = 1 ; x <= n1 ; x++)
{
l[x] = a[i + x - 1];
}
for(y = 1 ; y <= n2 ; y++)
{
r[y] = a[mij + y];
}
k=i;i=1 ; j=1;
while( i <= n1 && j<= n2)
{
if(l[i] <= r[j])
{
a[k]=l[i];
i++;
}
else
{
a[k]=r[j];
j++;
}
k++;
}
while(i <= n1)
{
a[k] = l[i];
k++; i++;
}
while(j <= n2)
{
a[k] = r[j];
k++; j++;
}
}
void merge_sort(int a[], int stg, int dr)
{
int mij;
if(stg < dr)
{
mij=stg + (dr-stg)/2;
merge_sort (a, stg, mij );
merge_sort (a, mij+1, dr);
interclas (a, stg, mij, dr);
}
}
int main()
{
int i, n , a[dim2];
f>>n;
for(i=1 ; i <= n ; i++)
{
f>>a[i];
}
merge_sort(a , 1 , n);
for(i=1 ; i <= n ; i++)
{
g<<a[i]<< " ";
}
return 0;
}