Pagini recente » Cod sursa (job #1725027) | Cod sursa (job #528342) | Cod sursa (job #446292) | Cod sursa (job #3252322) | Cod sursa (job #1061177)
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX 500001
int N, V[MAX], Aux[MAX], k;
void merge_sort(int l, int r)
{
if (l == r) return;
else
{
int mid = (l+r)/2;
merge_sort(l, mid);
merge_sort(mid+1, r);
int i1 = l, i2 = mid+1;
k = 0;
while (i1 <= mid && i2 <= r)
{
if (V[i1] <= V[i2])
Aux[k++] = V[i1++]; else
Aux[k++] = V[i2++];
}
while (i1 <= mid) Aux[k++] = V[i1++];
while (i2 <= r) Aux[k++] = V[i2++];
for (int i = l, j = 0; i <= r; i++, j++) V[i] = Aux[j];
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d", &N);
for (int i = 0; i < N; i++) scanf("%d", &V[i]);
merge_sort(0, N-1);
for (int i = 0; i < N; i++) printf("%d ", V[i]);
return 0;
}