Pagini recente » Autentificare | Cod sursa (job #3148214) | Cod sursa (job #485853) | Cod sursa (job #2044) | Cod sursa (job #1022940)
#include<iostream>
#include<fstream>
using namespace std;
int a[500001],b[500001];
void merge(int stanga,int pivot,int dreapta)
{
int p=stanga,q=pivot+1,k=stanga-1,i;
while(p<=pivot && q<=dreapta)
if(a[p]<a[q])
b[++k]=a[p++];
else
b[++k]=a[q++];
while(p<=pivot)
b[++k]=a[p++];
while(q<=dreapta)
b[++k]=a[q++];
for(i=stanga;i<=dreapta;i++)
a[i]=b[i];
}
void mergesort (int stanga,int dreapta)
{
int pivot;
pivot=(stanga+dreapta)/2;
if(stanga<dreapta)
{
mergesort(stanga,pivot);
mergesort(pivot+1,dreapta);
merge(stanga,pivot,dreapta);
}
}
int main()
{
int n,i;
ifstream fcin("algsort.in");
ofstream fcout("algsort.out");
fcin>>n;
for(i=1;i<=n;i++)
fcin>>a[i];
mergesort(1,n);
for(i=1;i<=n;i++)
fcout<<a[i]<<" ";
return 0;
}