Pagini recente » Cod sursa (job #923250) | Cod sursa (job #819523) | Cod sursa (job #1853688) | Cod sursa (job #2756797) | Cod sursa (job #1058974)
#include <iostream>
#include<fstream>
#define MAX_VECTOR 500007
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
void merge(int *a, int *b, int min, int pivot, int max)
{
int k,h,j,i;
i=min;
h=min;
j=pivot+1;
while((h<=pivot)&&(j<=max))
{
if(a[h]<=a[j])
{
b[i]=a[h];
h++;
}
else
{
b[i]=a[j];
j++;
}
i++;
}
if(h>pivot)
{
for(k=j; k<=max; k++)
{
b[i]=a[k];
i++;
}
}
else
{
for(k=h; k<=pivot; k++)
{
b[i]=a[k];
i++;
}
}
for(k=min; k<=max; k++)
a[k]=b[k];
}
void mergesort(int *a, int*b, int min, int max)
{
int pivot;
if(min<max)
{
pivot=(min+max)/2;
mergesort(a,b,min,pivot);
mergesort(a,b,pivot+1,max);
merge(a,b,min,pivot,max);
}
}
int main()
{
int a[MAX_VECTOR];
int num;
f>>num;
for(int i = 0;i<num;i++)
f>>a[i];
int b[MAX_VECTOR];
mergesort(a,b,0,num-1);
for(int i=0; i<num; i++)
g<<a[i]<<" ";
}