Pagini recente » Cod sursa (job #2903843) | Cod sursa (job #955953) | Cod sursa (job #503557) | Cod sursa (job #188287) | Cod sursa (job #2625142)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int a[500007], n;
void Interclasare(int st, int mij, int dr)
{
int aux[dr - st + 7], k = 0;
int i = st;
int j = mij + 1;
while(i <= mij && j <= dr)
{
if (a[i] < a[j])
aux[++k] = a[i++];
else
aux[++k] = a[j++];
/**
if (a[i] > a[j])
aux[++k] = a[j++];
if (a[i] == a[j])
{
aux[++k] = a[i++];
aux[++k] = a[j++];
}
*/
}
while (i <= mij)
aux[++k] = a[i++];
while (j <= dr)
aux[++k] = a[j++];
for (i = 1; i <= k; i++)
a[st + i - 1] = aux[i];
}
void MergeSort(int st, int dr)
{
if (st < dr)
{
int mij = (st + dr) / 2;
MergeSort(st, mij);
MergeSort(mij + 1, dr);
Interclasare(st, mij, dr);
}
}
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
fin >> a[i];
fin.close();
MergeSort(1, n);
for (int i = 1; i <= n; i++)
fout << a[i] << " ";
fout << "\n";
fout.close();
return 0;
}