Pagini recente » Cod sursa (job #1527876) | Cod sursa (job #1921561) | Cod sursa (job #2548926) | Cod sursa (job #1077502) | Cod sursa (job #1046379)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[100],n,b[100],i;
void merge(int *,int *,int,int,int);
void mergesort(int a[],int b[],int low,int high)
{ int pivot;
if(low<high)
{ pivot=(low+high)/2;
mergesort(a,b,low,pivot);
mergesort(a,b,pivot+1,high);
merge(a,b,low,pivot,high);
}
}
void merge(int a[],int b[],int low,int pivot,int high)
{ int h,i,m,k;
h=low;
i=low;
m=pivot+1;
while((h<=pivot)&&(m<=high))
{ if(a[h]<=a[m])
{ b[i]=a[h];
h++;
}
else
{ b[i]=a[m];
m++;
}
i++;
}
if(h>pivot) { for(k=m;k<=high;k++)
{ b[i]=a[k];
i++;
}
}
else
{ for(k=h;k<=pivot;k++)
{ b[i]=a[k];
i++;
}
}
for(k=low;k<=high;k++) a[k]=b[k];
}
int main()
{ f>>n;
for(i=1;i<=n;i++)
f>>a[i];
mergesort(a,b,1,n);
for(int i=1;i<=n;i++)
g<<a[i]<<" ";
g<<endl;
return 0;
}