Pagini recente » Cod sursa (job #1228529) | Cod sursa (job #2412040) | Cod sursa (job #1633392) | Cod sursa (job #553487) | Cod sursa (job #1414968)
#include<stdio.h>
#include<stdlib.h>
int a[500005],c[500005];int n ;
void interclasare(int sta, int dra ,int stb,int drb, int a[], int b[], int c[])
{ int i=sta,j=stb,k=-1;
while(i<=dra && j<=drb)
{ if(a[i]<b[j])
{k++; c[k]=a[i];i++;}
else
{k++;c[k]=b[j];j++;}
}
while(j<=drb)
{
k++; c[k]=b[j];j++; }
while(i<=dra)
{
k++;c[k]=a[i];i++;
}
}
void mergesort(int st , int dr , int a[])
{ if (st>=dr) return ;
int mijl=(st+dr)/2;
mergesort(st,mijl,a);
mergesort(mijl+1, dr, a);
interclasare(st, mijl , mijl+1, dr, a, a, c);
int i,j=st;
for(i=0;i<dr-st+1;i++)
{
a[j]=c[i];
j++;
}
}
int main (){FILE *f=fopen("algsort.in", "r");
FILE *g=fopen("algsort.our", "w");
int n,i ;
fscanf(f ,"%d", &n);
for(i=0;i<n;i++)
fscanf(f,"%d", &a[i]);
mergesort(0,n-1,a);
for(i=0;i<n;i++)
fprintf(g," %d", a[i]);
return 0;
}