Pagini recente » Cod sursa (job #2781925) | Cod sursa (job #49433) | Cod sursa (job #352225) | Cod sursa (job #2413549) | Cod sursa (job #2081058)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
void mergesort(int a[],int st, int m, int 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(int a[],int st, int 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);
}
}
int main()
{int v[500001],n,i;
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]<<" ";
}