Pagini recente » Cod sursa (job #639950) | Monitorul de evaluare | Cod sursa (job #2179693) | Monitorul de evaluare | Cod sursa (job #1023562)
#include<iostream.h>
#include<fstream.h>
ifstream f("algsort.in");
ofstream g("algsort.out");
int x[500000],n;
void divizeaza (int s,int d,int &m)
{ m=(s+d)/2;
}
void interclaseaza(int s,int d,int m)
{ int i=s,j=m+1,k=1,v[100];
while(i<=m && j<=d)
{if(x[i]<x[j])
{ v[k]=x[i];
i++;
}
else
{v[k]=x[j];
j++;
}
k++;
}
if(i<=m)
while(i<=m)
{ v[k]=x[i];
i++;
k++;
}
else
while (j<=d)
{ v[k]=x[j];
j++;
k++;
}
k=1;
for(i=s;i<=d;i++)
{x[i]=v[k];
k++;}
}
void MergeSort(int s,int d)
{int m;
if(s<d)
{divizeaza(s,d,m);
MergeSort(s,m);
MergeSort(m+1,d);
interclaseaza(s,d,m);
}
}
int main()
{ int i;
f>>n;
for(i=1;i<=n;i++)
f>>x[i];
MergeSort(1,n);
for(i=1;i<=n;i++)
g<<x[i]<<" ";
}