Pagini recente » Cod sursa (job #2138539) | Cod sursa (job #40440) | Cod sursa (job #3247942) | Cod sursa (job #1368421) | Cod sursa (job #2897644)
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int Nmax = 5e5 + 5;
int v[Nmax], n, temp[Nmax];
void mergesort(int st, int dr)
{
if(st < dr)
{
int middle = (st + dr)/2;
mergesort(st, middle);
mergesort(middle + 1, dr);
int i = st, j = middle + 1, k = 0;
while(i <= middle && j <= dr)
{
if(v[i] < v[j])
temp[++ k] = v[i ++];
else
temp[++ k] = v[j ++];
}
while(i <= middle)
temp[++ k] = v[i ++ ];
while(j <= dr)
temp[++ k] = v[j ++];
for(i = dr; i >= st; -- i)
v[i] = temp[k --];
}
}
int main() {
in >> n;
for(int i = 0; i < n; ++ i)
in >> v[i];
mergesort(0, n - 1);
for(int i = 0; i < n; ++ i)
out << v[i] << ' ';
return 0;
}