Pagini recente » Cod sursa (job #711527) | Cod sursa (job #621087) | Cod sursa (job #2272057) | Cod sursa (job #510376) | Cod sursa (job #770258)
Cod sursa(job #770258)
#include<fstream>
using namespace std;
int n, a[500001],i;
void merge(int, int, int);
void mergesort(int low, int high)
{int middle;
if(low<high)
{middle=(low+high)/2;
mergesort(low, middle);
mergesort(middle+1,high);
merge(low,middle,high);
}
}
void merge(int low, int middle, int high)
{int j,k,aux,b[500001],nb;
j=low; k=middle+1; nb=low-1;
while(j<=middle && k<=high)
{nb++;
if(a[j]>a[k])
{b[nb]=a[k];
k++;}
else
{b[nb]=a[j];
j++;}
}
int t;
if(j>middle)
{for(t=k; t<=high; t++)
{nb++;
b[nb]=a[t];}
}
else
{for(t=j; t<=middle; t++)
{nb++;
b[nb]=a[t];}
}
for(t=low; t<=high; t++)
a[t]=b[t];
}
int main()
{ifstream f("mergesort.in");
ofstream g("mergesort.out");
f>>n;
for(i=1; i<=n; i++)
f>>a[i];
mergesort(1,n);
for(i=1; i<=n; i++)
g<<a[i]<<" ";
g<<endl;
f.close();
g.close();
return 0;}