Pagini recente » Cod sursa (job #896231) | Cod sursa (job #2847619) | Cod sursa (job #2786677) | Cod sursa (job #2533271) | Cod sursa (job #540465)
Cod sursa(job #540465)
#include<fstream.h>
#include<stdlib.h>
void msort(int *v,int nv)
{
int *aux, i, is, j, js, k, size, *s, *d, *paux;
aux=(int*)malloc(sizeof(int)*nv);
for(i=0;i+1<nv;i+=2)if(v[i]>v[i+1]){
j=v[i];
v[i]=v[i+1];
v[i+1]=j;
}
s=v;
d=aux;
size=2;
while(size<nv)
{
i=k=0;
j=size;
do{
is=i+size;
if(j+size<=nv)js=j+size;
else js=nv;
while(i<is && j<js)if(s[i]<=s[j])d[k++]=s[i++];
else d[k++]=s[j++];
if(i<is)do d[k++]=s[i++];while(i<is);
else while(j<js)d[k++]=s[j++];
i=j;
j+=size;
} while(j<nv);
while(i<nv){
d[i]=s[i];
i++;
}
size=size*2;
paux=s;
s=d;
d=paux;
}
if(s==aux)for(i=0;i<nv;i++)v[i]=aux[i];
}
int main()
{
int i,nv,*v;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>nv;
v=(int*)malloc(sizeof(int)*nv);
for(i=0;i<nv;i++)f>>v[i];
msort(v,nv);
for(i=0;i<nv;i++)g<<v[i]<<' ';
return 0;
}