Cod sursa(job #1107972)

Utilizator andreeaghetuUNIBUC andreeaghetu andreeaghetu Data 15 februarie 2014 12:08:50
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 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;
    }