Pagini recente » Cod sursa (job #1729142) | Cod sursa (job #477539) | Cod sursa (job #341797) | Cod sursa (job #1993447) | Cod sursa (job #1590015)
#include <stdio.h>
#include <algorithm>
using namespace std;
int v[500005];
void mergeThem(int l, int mij, int r){
int j = mij+1;
int i = l;
int k = i-1;
int a[500005];
while(i <= mij && j <= r){
if(v[i] < v[j]){
a[++k] = v[i];
i++;
}else{
a[++k] = v[j];
j++;
}
}
if(i <= mij){
for(;i <= mij;i++){
a[++k] = v[i];
}
}
if(j <= r){
for(;j <= r;j++){
a[++k] = v[j];
}
}
for(i = l;i <= r;i++){
v[i] = a[i];
}
}
void mergeSort(int l, int r){
if(l == r){
return;
}
if(l == r-1){
if(v[l] > v[r]){
swap(v[l],v[r]);
}
return;
}
int mij = l+(r-l)/2;
mergeSort(l, mij);
mergeSort(mij+1, r);
mergeThem(l, mij, r);
}
int main()
{
int n;
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d",&n);
for(int i = 1;i <= n;i++){
scanf("%d",&v[i]);
}
mergeSort(1, n);
for(int i = 1;i <= n;i++){
printf("%d ",v[i]);
}
return 0;
}