Pagini recente » Cod sursa (job #637375) | Cod sursa (job #1952117) | Cod sursa (job #3032890) | Cod sursa (job #1707968) | Cod sursa (job #2943655)
#include <fstream>
using namespace std;
#define NMAX 500000
int v[NMAX], h[NMAX];
void Merge(int st, int mid, int dr)
{
int i = st, j = mid+1, poz = 0;
while (i <= mid && j <= dr)
{
if (v[i] < v[j])
{
h[poz++] = v[i];
i++;
}
else
{
h[poz++] = v[j];
j++;
}
}
while (i <= mid)
{
h[poz++] = v[i];
i++;
}
while (j<=dr)
{
h[poz++] = v[j];
j++;
}
for(i = 0; i < poz; i++)
{
v[i + st] = h[i];
h[i] = 0;
}
}
void MergeSort(int st, int dr)
{
if (st == dr)
return;
int mij = (st + dr)/2;
MergeSort(st, mij);
MergeSort(mij+1, dr);
Merge(st, mij, dr);
}
int main()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
fin >> n;
for (int i = 0; i < n; i++)
fin >> v[i];
MergeSort(0, n-1);
for (int i = 0; i < n; i++)
fout << v[i] << " ";
}