Cod sursa(job #852831)

Utilizator blechereyalBlecher Eyal blechereyal Data 11 ianuarie 2013 20:07:51
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
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;
}