Pagini recente » Cod sursa (job #2262757) | Diferente pentru problema/nkbiti intre reviziile 18 si 6 | Atasamentele paginii Profil Daniel0001 | Istoria paginii utilizator/cml12 | Cod sursa (job #1511593)
#include <stdio.h>
int N;
int V[500005], aux[500005];
void interc (int V[], int lt, int rt)
{
int mid = (lt + rt) / 2;
int k = lt - 1, i = lt, j = mid + 1;
while (i <= mid && j <= rt)
{
if (V[i] < V[j])
{
++k;
aux[k] = V[i];
++i;
}
else
{
++k;
aux[k] = V[j];
++j;
}
}
while (i <= mid)
{
++k;
aux[k] = V[i];
++i;
}
while (j <= rt)
{
++k;
aux[k] = V[j];
++j;
}
for (i = lt; i <= rt; ++i)
V[i] = aux[i];
}
void mergeSort(int V[], int lt, int rt)
{
if (lt == rt)
return;
int mid = (lt + rt) / 2;
mergeSort(V, lt, mid);
mergeSort(V, mid + 1, rt);
interc(V, lt, rt);
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int i;
scanf("%d", &N);
for (i = 1; i <= N; ++i)
scanf("%d", &V[i]);
mergeSort(V, 1, N);
for (i = 1; i <= N; ++i)
printf("%d ", V[i]);
return 0;
}