Pagini recente » Cod sursa (job #2110148) | Cod sursa (job #1130681) | Cod sursa (job #1814734) | Cod sursa (job #338359) | Cod sursa (job #2899871)
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500010], n, aux[500010];
void merge(int st, int m, int dr)
{
int i = st, j = m+1, k = st;
while(i <= m && j <= dr) {
if(a[i] < a[j]){
aux[k] = a[i];
i++; k++;
}
else{
aux[k] = a[j];
j++; k++;
}
}
while(i <= m){
aux[k] = a[i];
i++; k++;
}
while(j <= dr){
aux[k] = a[j];
j++; k++;
}
for(i = st; i <= dr; i++)
a[i] = aux[i];
}
void sort(int st, int dr) {
if(st < dr) {
int m = (st + dr) / 2;
sort(st,m);
sort(m + 1,dr);
merge(st, m, dr);
}
}
int main()
{
f >> n;
for(int i = 1; i <= n; i++)
f >> a[i];
sort(1,n);
for(int i = 1; i <= n; i++)
g << a[i] << ' ';
return 0;
}