Pagini recente » Cod sursa (job #1941535) | Cod sursa (job #829185) | Cod sursa (job #2278308) | Cod sursa (job #2706646) | Cod sursa (job #2625204)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500001];
void interclasare(int v[],int st,int dr)
{
int i,j,k,mij=(st+dr)/2,l1=mij-st+1,l2=dr-mij;
int arr1[l1],arr2[l2];
for(i=0;i<l1;i++)
arr1[i]=v[st+i];
for(j=0;j<l2;j++)
arr2[j]=v[mij+j+1];
i=0;j=0;k=st;
while(i<l1 && j<l2)
if (arr1[i]>arr2[j])
v[k++]=arr2[j++];
else
v[k++]=arr1[i++];
while(i<l1)
v[k++]=arr1[i++];
while(j<l2)
v[k++]=arr2[j++];
}
void merge_sort(int v[],int st,int dr)
{
if (st<dr)
{
merge_sort(v,st,(st+dr)/2);
merge_sort(v,(st+dr)/2+1,dr);
interclasare(v,st,dr);
}
}
int main()
{
int n;
f>>n;
for(int t=0;t<n;t++)
f>>v[t];
merge_sort(v,0, n-1);
for(int t=0;t<n;t++)
g<<v[t]<<' ';
f.close();
g.close();
return 0;
}