Pagini recente » Cod sursa (job #1487815) | Cod sursa (job #785271) | Cod sursa (job #1683806) | Cod sursa (job #2480912) | Cod sursa (job #2053920)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500040], n;
void citire()
{
int i;
f>>n;
for(i=1;i<=n;++i)
f>>v[i];
f.close();
}
void afisare()
{
int i;
for(i=1;i<=n;++i)
g<<v[i]<<" ";
g<<endl;
g.close();
}
void mergee(int x[], int p, int mid, int q)
{
int i, j, k;
int n1 = mid - p+ 1;
int n2 = q- mid;
int L[n1], R[n2];
for (i = 0; i < n1; i++)
L[i] = x[p+ i];
for (j = 0; j < n2; j++)
R[j] = x[mid + 1+ j];
i = 0; j = 0; k = p;
while (i < n1 && j < n2)
{
if (L[i] <= R[j])
{
x[k] = L[i];
i++;
}
else
{
x[k] = R[j];
j++;
}
k++;
}
while (i < n1)
{
x[k] = L[i];
i++;
k++;
}
while (j < n2)
{
x[k] = R[j];
j++;
k++;
}
}
void merge_sort( int p, int q)
{
if(p<q)
{
int mid=(p+q)/2;
merge_sort(p, mid);
merge_sort( mid+1, q);
mergee(v, p, mid, q);
}
}
int main()
{
citire();
merge_sort(1,n);
afisare();
}