Pagini recente » Cod sursa (job #1284515) | Cod sursa (job #1501611) | Cod sursa (job #577404) | Cod sursa (job #2593654) | Cod sursa (job #2104018)
/// merge sort
#include <fstream>
using namespace std;
int n, v[500010];
int aux[500010];
void Read()
{
ifstream fin("algsort.in");
fin >> n;
for (int i = 1;i <= n;++i)
fin >> v[i];
fin.close();
}
void Interclasare(int left, int mid, int right)
{
int i = left, j = mid + 1;
int pos = left - 1;
while (i <= mid && j <= right)
{
if (v[i] <= v[j])
aux[++pos] = v[i++];
else
aux[++pos] = v[j++];
}
while (i <= mid)
{
aux[++pos] = v[i++];
}
while (j <= right)
{
aux[++pos] = v[j++];
}
for (i = left;i <= right;++i)
{
v[i] = aux[i];
}
}
void MergeSort(int left, int right)
{
if (left == right)
return;
int mid = (left + right) / 2;
MergeSort(left, mid);
MergeSort(mid + 1, right);
Interclasare(left, mid, right);
}
void Write()
{
ofstream fout("algsort.out");
for (int i = 1;i <= n;++i)
fout << v[i] << " ";
fout.close();
}
int main()
{
Read();
MergeSort(1, n);
Write();
return 0;
}