Pagini recente » Cod sursa (job #2541359) | Cod sursa (job #1158377) | Cod sursa (job #1001978) | Cod sursa (job #2749809) | Cod sursa (job #2081059)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
void mergesort(long long a[],long long st, long long m, long long dr)
{
int b[100];
int i, j, k;
i = 0; j = st;
// copiem prima jumatate a vectorului a in b
while (j <= m)
b[i++] = a[j++];
i = 0; k = st;
// copiem inapoi cel mai mare element la fiecare pas
while (k < j && j <= dr)
if (b[i] <= a[j])
a[k++] = b[i++];
else
a[k++] = a[j++];
// copiem elementele ramase daca mai exista
while (k < j)
a[k++] = b[i++];
}
void merge(long long a[],long long st, long long dr)
{
if (st < dr)
{
int m = (st+dr)/2;
merge(a,st, m);
//apelam merge pe jumatatea din stanga
merge(a,m+1, dr);
//apelam merge pe jumatatea din dreapta
mergesort(a,st, m, dr);
}
}
long long v[500001],n,i;
int main()
{
f>>n;
for( i =0;i<n;i++)
f>>v[i];
merge (v,0,n-1);
for( i =0;i<n;i++)
g <<v[i]<<" ";
}