Pagini recente » Cod sursa (job #2808478) | Cod sursa (job #2508306) | Cod sursa (job #467758) | Cod sursa (job #1673638) | Cod sursa (job #540258)
Cod sursa(job #540258)
#include<stdio.h>
void msort(int *v,int li,int ls)
{
if(li==ls)return;
int m=(li+ls)/2;
msort(v,li,m);
msort(v,m+1,ls);
int i, j, k, *aux;
aux=(int*)malloc(sizeof(int)*(ls-li+1));
i=li;
j=m+1;
k=0;
while(i<=m && j<=ls)if(v[i]<=v[j])aux[k++]=v[i++];
else aux[k++]=v[j++];
if(i<=m)do aux[k++]=v[i++];while(i<=m);
else while(j<=ls)aux[k++]=v[j++];
for(i=li;i<=ls;i++)v[i]=aux[i-li];
free(aux);
}
int main()
{
FILE *f,*g;
int i,nv,*v;
f=fopen("algsort.in","rt");
g=fopen("algsort.out","wt");
fscanf(f,"%i",&nv);
v=(int*)malloc(sizeof(int)*nv);
for(i=0;i<nv;i++)fscanf(f,"%i",v+i);
msort(v,0,nv);
for(i=0;i<nv;i++)fprintf(g,"%i ",v[i]);
}