Pagini recente » Cod sursa (job #348059) | Cod sursa (job #2920352) | Cod sursa (job #392846) | Cod sursa (job #2224420) | Cod sursa (job #1010690)
#include <fstream>
#include <iostream>
using namespace std;
#define NMAX 500010
int v[NMAX];
void interclasare(int init, int pivot, int fin)
{
int x = NMAX;
int a[x],i,j,k=0;
i=init;
j=pivot+1;
while((i<=pivot)&&(j<=fin))
{
if(v[i]<v[j]) a[k++]=v[i++];
else a[k++]=v[j++];
}
while(i<=pivot) a[k++]=v[i++];
while(j<=fin) a[k++]=v[j++];
int t=init;
for(k=0;k<=(fin-init);k++) v[t++]=a[k];
}
void merge_sort(int init,int fin)
{
if(fin-init>=1)
{
int temp=(init+fin)/2;
merge_sort(init,temp);
merge_sort(temp+1,fin);
interclasare(init,temp,fin);
}
}
int main()
{
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int n; cin >> n;
for (int i = 0; i < n; i++)
cin >> v[i];
merge_sort(1, n);
for (int i = 0; i < n; i++)
cout << v[i];
cin.close();
cout.close();
return 0;
}