Pagini recente » Cod sursa (job #639460) | Cod sursa (job #1547586) | Cod sursa (job #1788583) | Cod sursa (job #417595) | Cod sursa (job #1314063)
//MergeSort
#include <fstream>
#define NMAX 1000
using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
struct vec{int n; int v[NMAX];};
vec v;
void intercl(int a[], int s, int p, int d)
{
int j=1, i, b[NMAX] ,sp=p ,c=d-s+1;
p++;
for(i=1; i<=c; i++)
if(((a[s]>a[p])&&(p<=d))||(s>sp))
{
b[j]=a[p];
p++;
j++;
}
else
{
b[j]=a[s];
s++;
j++;
}
s=d-c;
for(i=1;i<=c;i++)
a[s+i]=b[i];
}
void msort(int a[], int low, int high)
{
int pivot;
if(low<high)
{
pivot=(low+high)/2;
msort(a,low,pivot);
msort(a,pivot+1,high);
intercl(a,low,pivot,high);
}
}
int main()
{
f >> v.n;
for(int i=1; i<=v.n; i++)
f >> v.v[i];
msort(v.v, 1, v.n);
for(int i=1; i<=v.n; i++)
g << v.v[i] << " ";
return 0;
}