Cod sursa(job #1107915)

Utilizator andreeaghetuUNIBUC andreeaghetu andreeaghetu Data 14 februarie 2014 22:15:02
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("algsort.in");
ofstream out ("algsort.out");





void Merge(int *v,int a,int b,int c,int d)
{int a1=a,d1=d;

int x[d-a+1];
int k=0;
while(a<=b&&c<=d)
{
    if(v[a]<=v[c])
    {
        x[k++]=v[a++];

    }
    else
    {
        x[k++]=v[c++];


    }
}
if(a>b)
{
    while(c<=d)
    {
        x[k++]=v[c++];

    }
}
if(c>d)
{
    while(a<=b)
    {
        x[k++]=v[a++];

    }
}
k=0;
for(int i=a1;i<=d1;i++)
{
    v[i]=x[k++];

}

}
   void MergeSort(int *v,int a,int b)
   {int m;
       if(b-a>=1)
          {
           m=(a+b)/2;
           MergeSort(v,a,m);
           MergeSort(v,m+1,b);


           Merge(v,a,m,m+1,b);
       }
       else return;






   }

 int   main(){
        int n,v[500005];
	in>>n;
	for(int i=0;i<n;i++)
	{
		in>>v[i];
	}

        MergeSort(v,0,n-1);
        for(int i=0;i<n;i++)
        {
            	out<<v[i];
        }
    return 0;
    }