Pagini recente » Cod sursa (job #2735892) | Cod sursa (job #1837421) | Cod sursa (job #1409490) | Cod sursa (job #638346) | Cod sursa (job #2847668)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
const int NMAX = 5e5;
int v[NMAX], n;
void merge(int v[], int st, int dr){
int mid = ((st + dr) >> 1);
int aux[int(5e5)], k = 0;
int i = st, j = mid + 1;
while(i <= mid && j <= dr){
if(v[i] < v[j])
aux[k++] = v[i++];
else aux[k++] = v[j++];
}
while(i <= mid)
aux[k++] = v[i++];
while(j <= dr)
aux[k++] = v[j++];
for(int p = 0; p < k; p++)
v[st + p] = aux[p];
}
void ms(int v[], int st, int dr){
if(st == dr)
return;
int mid = ((st + dr) >> 1);
ms(v, st, mid);
ms(v, mid + 1, dr);
merge(v, st, dr);
}
int main(){
ios :: sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for(int i = 0; i < n; i++)
cin >> v[i];
ms(v, 0, n - 1);
for(int i = 0; i < n; i++)
cout << v[i] << " ";
}