Pagini recente » Istoria paginii runda/aaaaaaaaaaaaaaaaaaaaaaa | Cod sursa (job #1037251) | Cod sursa (job #1691952) | Cod sursa (job #1933778) | Cod sursa (job #2158945)
#include <stdio.h>
#include <stdlib.h>
#define DIM 10000
char buffer[DIM];
int poz = 0;
#define NMax 500003
typedef struct {
double x;
double y;
}POINT;
POINT a[NMax];
int n;
POINT v[NMax];
void merge_sort(POINT a[], int lo, int hi) {
if (lo == hi) {
return;
}
int mid = (lo + hi) / 2;
merge_sort(a, lo, mid);
merge_sort(a, mid + 1, hi);
int nr = 0;
int l = lo, r = mid + 1;
while (l <= mid && r <= hi) {
if (a[l].x < a[r].x) {
v[++nr] = a[l];
++l;
}
else {
v[++nr] = a[r];
++r;
}
}
while (l <= mid) {
v[++nr] = a[l];
++l;
}
while (r <= hi) {
v[++nr] = a[r];
++r;
}
int i,t;
for (i = lo, t = 1; i <= hi; ++i) {
a[i] = v[t++];
}
}
int main() {
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
scanf("%d",&a[i].x);
a[i].y = 1;
}
merge_sort(a, 1, n);
for(int i = 1; i <= n; ++i){
printf("%d ",a[i].x);
}
return 0;
}