Pagini recente » Cod sursa (job #2923176) | Cod sursa (job #2743616) | Cod sursa (job #3041099) | Cod sursa (job #2940581) | Cod sursa (job #2623569)
#include <bits/stdc++.h>
using namespace std;
int n,a[500010], temp[500010];
void interclasare(int st, int mid, int dr){
int i = st, j = mid, k = st;
while (i < mid && j < dr){
if(a[i] <= a[j]){
temp[k++] = a[i];
i++;
}
else {
temp[k++] = a[j];
j++;
}
}
while(i < mid){
temp[k++] = a[i];
i++;
}
while(j < dr){
temp[k++] = a[j];
j++;
}
for(i = st; i<dr;i++)
a[i] = temp[i];
}
void mergesort(int st, int dr){
if(dr - st > 1){
int mid = (dr+st)/2;
mergesort(st, mid);
mergesort(mid, dr);
interclasare(st,mid,dr);
}
}
int main()
{
ifstream cin("algsort.in");
ofstream cout("algsort.out");
cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
mergesort(0,n);
for(int i=0;i<n;i++)cout<<a[i]<<' ';
return 0;
}