Pagini recente » Cod sursa (job #2662739) | Cod sursa (job #291062) | Cod sursa (job #2070267) | Cod sursa (job #645006) | Cod sursa (job #2910589)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
vector <int> ic;
int v[500005];
void interclasare(int lf, int med, int rg)
{
int st1=lf, dr1=med, st2=med+1, dr2=rg;
for(int i=st1; i<=dr1; i++)
{
while(v[st2]<v[i] && st2<=dr2)
{
ic.push_back(v[st2]);
st2++;
}
ic.push_back(v[i]);
}
while(st2<=dr2)
{
ic.push_back(v[st2]);
st2++;
}
for(int i=lf; i<=rg; i++)
v[i]=ic[i-lf];
ic.clear();
}
void mergesort(int lf, int rg)
{
if(rg==lf)
return;
int med=(lf+rg)/2;
mergesort(lf, med);
mergesort(med+1, rg);
interclasare(lf, med, rg);
}
int main()
{
int n;
fin>>n;
for(int i=1; i<=n; i++)
fin>>v[i];
mergesort(1, n);
for(int i=1; i<=n; i++)
fout<<v[i]<<" ";
return 0;
}