Cod sursa(job #240560)

Utilizator mihai.cuculiciCuculici Mihail mihai.cuculici Data 7 ianuarie 2009 22:13:53
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<fstream>
#define NMAX 500010
using namespace std;

int v[NMAX];

void interclasare(int init, int pivot, int fin)
{
     int a[500],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()
{
    int n,i;
    ifstream f ("algsort.in");
    ofstream g ("algsort.out");
    f>>n;
    for(i=0;i<n;i++) f>>v[i];
    merge_sort(0,n-1);
    for(i=0;i<n;i++)g<<v[i]<<" ";
    return 0;
}