Pagini recente » Cod sursa (job #1565652) | Monitorul de evaluare | Cod sursa (job #1037633) | Monitorul de evaluare | Cod sursa (job #974453)
Cod sursa(job #974453)
#include<iostream>
#include<math.h>
#include<fstream>
#include<string.h>
#include<stdio.h>
#include<assert.h>
using namespace std;
int n,v[100];
void citire()
{
int i;
freopen("algsort.in", "r", stdin);
scanf("%d\n", &n);
for(i=1; i<=n; i++)
scanf("%d\n", &v[i]);
}
void afisare()
{
freopen("algsort.out", "w", stdout);
for(int i=1; i<=n; i++)
printf("%d ", v[i]);
}
void merge_sort(int li, int ls)
{
if(li < ls)
{
int m = (li + ls) / 2;
merge_sort(li, m);
merge_sort(m+1, ls);
int i = li, j = m+1,rez[100], k = 1;
while(i <= m && j <= ls)
{
if(v[i] < v[j])
rez[k++] = v[i++];
else
rez[k++] = v[j++];
}
while(i <= m)
rez[k++] = v[i++];
while(j <= ls)
rez[k++] = v[j++];
k = 1;
for(i=li; i<=ls; i++)
v[i] = rez[k++];
}
}
int main()
{
citire();
merge_sort(1,n);
afisare();
return 0;
}