Pagini recente » Cod sursa (job #15285) | Cod sursa (job #2616100) | Rating Cristiana Prodan (Craystiana) | Cod sursa (job #244091) | Cod sursa (job #1061176)
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX 500001
int N, V[MAX];
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;
while (i1 <= mid && i2 <= r)
{
if (V[i1] <= V[i2]) i1++; else
{
swap(V[i1++], V[i2]);
for (int j = i2; j + 1 <= r && V[j] > V[j+1]; j++) swap(V[j], V[j+1]);
}
}
}
}
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;
}