Pagini recente » Cod sursa (job #2722279) | Cod sursa (job #2205670) | Cod sursa (job #1023377) | Cod sursa (job #306558) | Cod sursa (job #1019684)
#include<iostream>
#include<fstream>
using namespace std;
int n, v[500000], c[500000];
void interclasare(int left, int right, int m)
{
int a=left, b=m, d=m+1, e=right,k=0,i;
while(a<=b && d<=e)
if(v[a]<v[d])
{
c[k]=v[a];
k++;
a++;
}
else
{
c[k]=v[d];
k++;
d++;
}
while(a<=b)
{
c[k]=v[a];
k++;
a++;
}
while(d<=e)
{
c[k]=v[d];
k++;
d++;
}
for(i=left;i<=right;i++)
v[i]=c[i-left];
}
void merge_sort(int left, int right)
{
int m;
if(left<right)
{
m=(left+right)/2;
merge_sort(left,m);
merge_sort(m+1,right);
interclasare(left, right, m);
}
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int i;
f>>n;
for(i=0;i<=n-1;i++)
{
f>>v[i];
c[i]=v[i];
}
merge_sort(0,n-1);
for(i=0;i<=n-1;i++)
g<<v[i]<<" ";
f.close();
g.close();
return 0;
}