Pagini recente » Cod sursa (job #84671) | Cod sursa (job #279893) | Rating cosmin pintilie (cosminpintilie) | Cod sursa (job #1843254) | Cod sursa (job #852834)
Cod sursa(job #852834)
#include <fstream>
#include <stdlib.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
#define max 500002
void interclas(int v[], int s, int d){
int m, i, j, k, a[max];
m=(s+d)/2;
i=k=s; j=m+1;
while(i<=m && j<=d)//cat timp indecsii sunt in domeniu
{if(v[i]<v[j]) {a[k]=v[i];i++;}
else {a[k]=v[j];j++;}
k++;
}
while(i<=m){a[k]=v[i];i++;k++;}
while(j<=d){a[k]=v[j];j++;k++;}
for(k=s;k<=d;k++) v[k]=a[k];
}
void mergesort(int v[], int s, int d){
if(s<d){
int m;
m=(s+d)/2;
mergesort(v, s, m);//sorteaza jumatatea stanga
mergesort(v,m+1,d);
} interclas(v,s,d);
}
int main()
{
int *v,n,i;
v=(int*)malloc(sizeof(int)*max);
f>>n;
for (i=0;i<n;i++) f>>v[i];
mergesort(v,0,n-1);
for(i=0;i<n;i++) g<<v[i]<<" ";
return 0;
}