Pagini recente » Cod sursa (job #2034942) | Cod sursa (job #2115740) | Cod sursa (job #2237429) | Cod sursa (job #146260) | Cod sursa (job #2315618)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int N,v[500000],i;
void interclasare(int v[],int l,int m,int r)
{
int i,j,k;
int n1=m-l+1;
int n2=r-m;
int L[n1],R[n2];
for(i=0;i<n1;i++)
L[i]=v[l+i];
for(j=0;j<n2;j++)
R[j]=v[m+1+j];
i=0;
j=0;
k=l;
while (i<n1 && j<n2)
{
if (L[i]<=R[j])
{
v[k]=L[i];
i++;
}
else
{
v[k]=R[j];
j++;
}
k++;
}
while(i<n1)
{
v[k]=L[i];
i++;
k++;
}
while(j<n2)
{
v[k]=R[j];
j++;
k++;
}
}
void mergeSort(int v[],int l,int r)
{
if (l < r)
{
int m=l+(r-l)/2;
mergeSort(v,l,m);
mergeSort(v,m+1,r);
interclasare(v,l,m,r);
}
}
int afisare(int v[],int N)
{
int i;
for(i=0;i<N;i++)
g<<v[i];
return 0;
}
int main()
{
f>>N;
for(i=0;i<N;i++)
f>>v[i];
mergeSort(v,0,N-1);
afisare(v,N);
return 0;
}