Pagini recente » Cod sursa (job #1143071) | Cod sursa (job #2726748) | Cod sursa (job #2921098) | Cod sursa (job #374459) | Cod sursa (job #1533895)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
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()
{
fin >> N;
for (int i = 1; i <= N; ++i)
fin >> V[i];
mergeSort(V, 1, N);
for (int i = 1; i <= N; ++i)
fout << V[i] << ' ';
fin.close();
fout.close();
return 0;
}