Pagini recente » Cod sursa (job #2376527) | Cod sursa (job #1379742) | Cod sursa (job #1903993) | Cod sursa (job #838901) | Cod sursa (job #2942681)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int v[500005], sol[500005];
void inter(int st, int mij, int dr){
int i = st, j = mij + 1, k = 1;
while(i <= mij && j <= dr){
if(v[j] > v[i]){
sol[k++] = v[i++];
}
else{
sol[k++] = v[j++];
}
}
while(i <= mij){
sol[k++] = v[i++];
}
while(j <= dr){
sol[k++] = v[j++];
}
for(i = 1, j = st; j <= dr; i++, j++){
v[j] = sol[i];
}
}
void msort(int st, int dr){
if(st == dr){
return;
}
int mid = (st + dr) / 2;
msort(st, mid);
msort(mid + 1, dr);
inter(st, mid, dr);
}
int main()
{
int n, i;
in >> n;
for(i = 1; i <= n; i++){
in >> v[i];
}
msort(1, n);
for(i = 1; i <= n; i++){
out << v[i] << " ";
}
return 0;
}