Cod sursa(job #1017466)

Utilizator PasparanPasparan Ana-Maria Pasparan Data 27 octombrie 2013 19:47:06
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include<stdio.h>
#define maxi 500005
int a[maxi];
void Intercl(int* t,int st,int m,int dr)
 {int i,j,k;
  int* aux=new int[dr-st+1];
  for(i=m+1; i>st; i--)
    aux[i-1]=t[i-1];
  for(j=m; j<=dr-1; j++)
   aux[dr+m-j]=t[j+1];
  for(k=st; k<=dr; k++)
    if(aux[j] < aux[i])
        t[k]=aux[j--];
    else
        t[k]=aux[i++];
 }
void Merge(int* t,int st,int dr)
 {if(st < dr)
    {unsigned m=(dr+st)/2; Merge(t,st,m); Merge(t,m+1,dr);
     Intercl(t,st,m,dr);
    }
 }
int main()
{
    int n, i;
    FILE *f,*g;
    f=fopen("algsort.in","r");
    g=fopen("algsort.out","w");
    fscanf(f,"%d",&n);
    for (i=0;i<n;i++)
        fscanf(f,"%d",&a[i]);
    Merge(a,0,n-1);
    for (i=0;i<n;i++)
        fprintf(g,"%d ",a[i]);
    fclose(f);
    fclose(g);
    return 0;
}