Pagini recente » Cod sursa (job #1547741) | Cod sursa (job #2563971) | Cod sursa (job #177539) | Cod sursa (job #1515749) | Cod sursa (job #1011470)
#include <fstream>
//merge sort
using namespace std;
int v[100000],c[100000];
void merge_vec(int *v, int i_left, int f_left, int i_right, int f_right)
{
int i=1,j;
int s_left=i_left;
while(i_left<=f_left && i_right <= f_right)
{
if(v[i_left]<v[i_right])
c[i++]=v[i_left++];
else
c[i++]=v[i_right++];
}
while(i_left<=f_left)
{
c[i++]=v[i_left++];
}
while(i_right <= f_right)
{
c[i++]=v[i_right++];
}
for(i=s_left,j=1;i<=f_right;i++,j++)
v[i]=c[j];
}
void merge_sort(int *v,int left, int right)
{
if(left==right)
return;
int middle=(left+right)/2;
merge_sort(v,left,middle);
merge_sort(v,middle+1,right);
merge_vec(v,left,middle,middle+1,right);
}
int main()
{
int n;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(int i=1;i<=n;i++)
f>>v[i];
merge_sort(v,1,n);
for(int i=1;i<=n;i++)
g<<v[i]<<" ";
return 0;
}