Cod sursa(job #1590184)

Utilizator IordachescuAncaFMI Iordachescu Anca Mihaela IordachescuAnca Data 4 februarie 2016 19:26:39
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include<fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int a[500008],N,aux[500008];
void interclasare(int a[],int aux[],int p, int q,int r)
{
    int i,j,k;
    i=p;
    j=q+1;
    k=0;
    while(i<=q&&j<=r)
    {
        if(a[i]<a[j])
        {
            k++;
            aux[k]=a[i];
            i++;
        }
        else
        {
            k++;
            aux[k]=a[j];
            j++;
        }
    }
    while(i<=q)
    {
        k++;
        aux[k]=a[i];
        i++;
    }
    while(j<=r)
    {
        k++;
        aux[k]=a[j];
        j++;
    }
    j=0;
    for(i=p;i<=r;i++)
    {
        j++;
        a[i]=aux[j];
    }
}
void mergesort(int a[], int aux[],int p,int r)
  {
    int q;
    if(p<r)
     {
        q=(p+r)/2;
        mergesort(a,aux,p,q);
        mergesort(a,aux,q+1,r);
        interclasare(a,aux,p,q,r);
     }
  }
  int main()
  {
      int i;
      fin>>N;
      for(i=1;i<=N;i++)
      {
          fin>>a[i];
      }
      mergesort(a,aux,1,N);
      for(i=1;i<=N;i++)
      {
          fout<<a[i]<<" ";
      }
      fin.close();
      fout.close();
      return 0;
  }