Pagini recente » Cod sursa (job #1821310) | Cod sursa (job #1048159) | Cod sursa (job #1278880) | Cod sursa (job #2448251) | Cod sursa (job #2715080)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int mult=500000;
int nr_elem, v[mult + 5], h[mult + 5];
void citire()
{
fin>>nr_elem;
nr_elem--;
for(int i=0; i<=nr_elem; i++)
fin>>v[i];
}
void mergesort(int st, int dr)
{
if(st>=dr)
return;
if(st+1==dr)
{
if(v[st]>v[dr])
swap(v[st], v[dr]);
return;
}
int med=(st+dr+1)/2;
mergesort(st, med);
mergesort(med+1, dr);
int i=st, j=med+1, k=st;
while(i <= med || j <= dr)
{
if(j>dr || (i<=med && v[i] < v[j]))
{
h[k]=v[i];
i++;
}
else
{
h[k]=v[j];
j++;
}
k++;
}
for(i=st; i<=dr; i++)
v[i]=h[i];
}
void afisare()
{
for(int i=0; i<=nr_elem; i++)
fout<<v[i]<<' ';
}
int main()
{
citire();
mergesort(0, nr_elem);
afisare();
return 0;
}