Pagini recente » Cod sursa (job #1122804) | Cod sursa (job #1387609) | Cod sursa (job #2870444) | Cod sursa (job #2565195) | Cod sursa (job #2269518)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500001];
void merges(int st, int mij, int dr)
{
int i, j, loc, b[500001];
i = st;
j = mij + 1;
loc = 0;
while(i <= mij && j <= dr)
{
if(a[i] <= a[j]){
loc++;
b[loc] = a[i];
i++;
}
else{
loc++;
b[loc] = a[j];
j++;
}
}
while(i <= mij){
loc++;
b[loc] = a[i];
i++;
}
while(j <= dr){
loc++;
b[loc] = a[j];
j++;
}
int k = 1;
for(i = st; i <= dr; i++){
a[i] = b[k];
k++;
}
}
void imp(int st, int dr)
{
if(st < dr)
{
int mij = (st + dr) / 2;
imp(st, mij);
imp(mij + 1, dr);
merges(st, mij, dr);
}
}
int main()
{
int n, i;
f>>n;
for(i = 1; i <= n; i++) f>>a[i];
imp(1, n);
for(i = 1; i <= n; i++) g<<a[i]<<" ";
f.close();
g.close();
return 0;
}