Pagini recente » Statistici Ristache Dragos (c909041) | Cod sursa (job #2002509)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500000], r[500000];
void mergesort(int li, int ls)
{
int aux, i, j, k = li, mid = (li + ls)/2;
if(ls - li <= 1)
{
if(v[li] > v[ls])
{
aux = v[li];
v[li] = v[ls];
v[ls] = aux;
}
return;
}
mergesort(li, mid);
mergesort(mid + 1, ls);
i = li;
j = mid + 1;
while(i <= mid && j <= ls)
{
if(v[i] < v[j])
{
r[k++] = v[i];
i++;
}
else
{
r[k++] = v[j];
j++;
}
}
while(i<=mid)
{
r[k++] = v[i];
i++;
}
while(j <= ls)
{
r[k++] = v[j];
j++;
}
for(i = li; i<=ls; i++)v[i] = r[i];
}
int main()
{
int n, i;
fin >> n;
for(i = 0; i<n; i++)fin >> v[i];
mergesort(0, n-1);
for(i = 0; i<n; i++)fout << v[i] << ' ';
return 0;
}