Pagini recente » Cod sursa (job #2779868) | Cod sursa (job #1279013) | Cod sursa (job #1581239) | Cod sursa (job #1181883) | Cod sursa (job #474693)
Cod sursa(job #474693)
#include<iostream>
#include<fstream>
#include<time.h>
#include<unistd.h>
#define N 1000
using namespace std;
int a[500010], c[500010];
void inter(int lo, int m, int hi){
int i = lo, j = m+1;
int k = lo;
while (i <= m && j <= hi){
if (a[i] < a[j]){
c[k] = a[i];
i++;
}
else {
c[k] = a[j];
j++;
}
k++;
}
while ( i <= m ){
c[k] = a[i];
k++;
i++;
}
while ( j <= hi ){
c[k] = a[j];
k++;
j++;
}
for (i = lo; i <= hi; i++)
a[i] = c[i];
}
void merge(int lo, int hi){
int m;
if (lo < hi){
m = (lo + hi)/2;
merge(lo, m);
merge(m+1, hi);
inter(lo, m, hi);
}
}
int main(){
ifstream f("algsort.in");
ofstream g("algsort.out");
int n, i;
f>>n;
for (i = 0; i < n; i++)
f>>a[i];
merge(0, n-1);
for (i = 0; i < n; i++)
g<<a[i]<<" ";
g<<'\n';
return 0;
}