Pagini recente » Cod sursa (job #560899) | Cod sursa (job #1877682) | Cod sursa (job #1301276) | Cod sursa (job #2174283) | Cod sursa (job #2622417)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
void mergesort(vector<int> &v, int a=-1, int b=-1){
if(a<0 || b<0)
{
a=0;
b=v.size();
}
if(a<b)
{
int m=(a+b)/2;
mergesort(v, a, m);
mergesort(v, m+1, b);
int p=a, p1=0, p2=0, v1[m-a+1], v2[b-m];
for(int i=a; i<=m; i++)
v1[i-a]=v[i];
for(int i=m+1; i<=b; i++)
v2[i-m-1]=v[i];
while(p1<m-a+1 && p2<b-m)
{
if(v1[p1]<=v2[p2])
v[p++]=v1[p1++];
else
v[p++]=v2[p2++];
}
while(p1<m-a+1)
v[p++]=v1[p1++];
while(p2<b-m)
v[p++]=v2[p2++];
}
}
int main()
{
int n, aux;
vector<int> v;
f>>n;
for(int i=0; i<n; i++)
{
f>>aux;
v.push_back(aux);
}
mergesort(v);
for(int i=0; i<n; i++)
g<<v[i]<<" ";
return 0;
}