Pagini recente » Cod sursa (job #2103748) | Cod sursa (job #1363515) | Cod sursa (job #3129027) | Cod sursa (job #2732387) | Cod sursa (job #1023418)
#include <iostream>
#include <fstream>
using namespace std;
void merge(int *a, int *b, int st, int mij, int dr)
{
int h,i,j,k;
h=st;
i=st;
j=mij+1;
while((h<=mij)&&(j<=dr))
{
if(a[h]<=a[j])
{b[i]=a[h];
h++;}
else
{b[i]=a[j];
j++;}
i++;
}
if(h>mij)
{
for(k=j; k<=dr; k++)
{b[i]=a[k];
i++;}
}
else
{
for(k=h; k<=mij; k++)
{b[i]=a[k];
i++;}
}
for(k=st; k<=dr; k++) a[k]=b[k];
}
void mergesort(int *a, int*b, int st, int dr)
{
int mij;
if(st<dr)
{
mij=(st+dr)/2;
mergesort(a,b,st,mij);
mergesort(a,b,mij+1,dr);
merge(a,b,st,mij,dr);
}
}
int main()
{ int i, n, *b, *a;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
a=(int*)malloc(n*sizeof(int));
b=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
f>>a[i];
f.close();
mergesort(a,b,0,n-1);
for(i=0; i<n; i++)
{cout<<a[i]<<" ";
g<<a[i]<<" ";}
g.close();
}