Pagini recente » Cod sursa (job #3245627) | Cod sursa (job #287907) | Cod sursa (job #520334) | Cod sursa (job #618684) | Cod sursa (job #1315721)
#include <stdio.h>
#include <stdlib.h>
FILE *f,*g;
void mergesort( int a[500000], int ls, int m ,int ld)
{
int b[500000];
int i , j , k ;
i=0;
j=ls;
while(j<=m)
b[i++]=a[j++];
i=0;
k=ls;
while(k<j && j <=ld)
if(b[i]<=a[j])
a[k++]=b[i++];
else
a[k++]=a[j++];
while (k < j)
a[k++] = b[i++];
}
void merge(int a[500000], int ls , int ld)
{
if(ls<ld)
{
int m=(ls+ld)/2;
merge(a,ls,m);
merge(a,m+1,ld);
mergesort(a,ls,m,ld);
}
}
void citire( int a[500000] , int n)
{
int i;
for(i=0; i<n; i++)
fscanf(f,"%d",&a[i]);
}
int main()
{
f=fopen("algsort.in","r");
g=fopen("algsort.out","w");
int a[500000], n , i ;
fscanf(f,"%d",&n);
citire(a,n);
merge(a,0,n-1);
for(i=0; i<n; i++)
fprintf(g,"%d ",a[i]);
return 0;
}