Pagini recente » Cod sursa (job #1087047) | Cod sursa (job #2720666) | Cod sursa (job #835482) | Cod sursa (job #1880958) | Cod sursa (job #2913585)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int NMAX = 500005;
int arr[NMAX], rez[NMAX];
int n;
void mergesort(int st, int dr)
{
if(st >= dr)
return;
else
{
int mid = (st+dr)/2;
mergesort(st, mid);
mergesort(mid+1, dr);
int ind1=st,ind2=mid+1,ind=0;
while(ind1 <= mid && ind2 <= dr)
if(arr[ind1] <= arr[ind2])
rez[++ind] = arr[ind1++];
else
rez[++ind] = arr[ind2++];
while(ind1 <= mid)
rez[++ind] = arr[ind1++];
while(ind2 <= dr)
rez[++ind] = arr[ind2++];
for(int i=st;i<=dr;++i)
arr[i] = rez[i-st+1];
}
}
int main()
{
f >> n;
for(int i=1;i<=n;++i)
f >> arr[i];
mergesort(1, n);
for(int i=1;i<=n;++i)
g << arr[i] << ' ';
}