Pagini recente » Cod sursa (job #2135324) | Cod sursa (job #2672079) | Cod sursa (job #3204652) | Cod sursa (job #1752389) | Cod sursa (job #2622448)
#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;
for(int i=0;i<n;i++)
f>>v[i];
merge_sort(v,0, n-1);
for(int i=0;i<n;i++)
g<<v[i]<<' ';
f.close();
g.close();
return 0;
}