Pagini recente » Cod sursa (job #2425226) | Rating Bogan Silvia-Gabriela (silvyyy_yo) | Istoria paginii utilizator/yuri_titus | Cod sursa (job #1007372) | Cod sursa (job #1011471)
#include <fstream>
//merge sort
using namespace std;
int v[5000002],c[500002];
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;
}