Pagini recente » Cod sursa (job #2422790) | Cod sursa (job #2134712) | Cod sursa (job #2873461) | Cod sursa (job #1245724) | Cod sursa (job #1239305)
#include <iostream>
#include <fstream>
using namespace std;
int a[500000];
void interclasare( int ii, int m, int s)
{
int n1 = ii;
int n2 = m + 1;
int b[500000];
int k = 0;
while (n1 <= m && n2 <= s)
{
if (a[n1] <= a[n2])
{
b[k] = a[n1];
k++;
n1++;
}
else
{
b[k] = a[n2];
k++;
n2++;
}
}
if (n1 > m)
{
while (n2 <= s)
{
b[k] = a[n2];
k++;
n2++;
}
}
else
{
while (n1 <= m)
{
b[k] = a[n1];
k++;
n1++;
}
}
n1 = ii;
for (int i = 0; i < k; i++)
{
a[n1] = b[i];
n1++;
}
}
void mergesort(int i, int s)
{
if (i != s)
{
mergesort(i, (i + s) / 2);
mergesort((i + s) / 2 + 1, s);
interclasare( i, (i + s) / 2, s);
}
if (a[i] == 2);
}
int main()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
fin >> n;
for (int i = 0; i < n; i++)
{
fin >> a[i];
}
mergesort(0, n-1);
for (int i = 0; i < n; i++)
{
fout << a[i] << ' ';
}
}