Pagini recente » Cod sursa (job #2146897) | Cod sursa (job #2525489) | Cod sursa (job #3159971) | Cod sursa (job #3038726) | Cod sursa (job #2758349)
#include <fstream>
#include<iostream>
//mergesort
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500001];
void interclasare(int st, int dr, int mij)
{
int aux[500001], i, j, k = 0;
i = st;
j = mij + 1;
while(i <= mij && j <= dr)
if(v[i] < v[j]) aux[++k] = v[i++];
else aux[++k] = v[j++];
while(i <= mij)
aux[++k] = v[i++];
while(j <= dr)
aux[++k] = v[j++];
for(i = st, j = 1; j <= k; ++i, ++j)
v[i] = aux[j];
}
void mergesort(int st, int dr)
{
if(st < dr)
{
int mij = (st + dr) / 2;
mergesort(st, mij);
mergesort(mij + 1, dr);
interclasare(st, dr, mij);
}
}
int main()
{
int n;
f >> n;
for(int i = 0; i < n; i++)
f >> v[i];
mergesort(0, n-1);
for(int i = 0; i < n; i++)
g << v[i] << " ";
return 0;
f.close();
g.close();
}