显示原始代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int arr[2][100000] = { 0 };
void error(int x) {
int ex = 0; int x1; int *i = &arr[0][0], *j = &arr[0][1];
int* bi = &arr[1][0];
int len = 1; for (len = 1; len < x; len *= 2) {
for (x1 = 0; x1 < x; x1 += (2 * len)) {
for (i = &arr[ex % 2][x1], j = &arr[ex % 2][x1 + len], bi = &arr[1 - ex % 2][x1];
1;) {
if (j >= &arr[ex % 2][x]) {
for (; i < &arr[ex % 2][x1 + len] && i < &arr[ex % 2][x]; i++, bi++) {
*bi = *i;
}
break;
} else if (*i > *j) {
*bi = *j;
j++;
bi++;
if (j >= &arr[ex % 2][x1 + 2 * len] || j >= &arr[ex % 2][x]) {
for (; i < &arr[ex % 2][x1 + len]; i++, bi++) {
*bi = *i;
}
break;
}
} else {
*bi = *i;
i++;
bi++;
if (i >= &arr[ex % 2][x1 + len] || i >= &arr[ex % 2][x]) {
for (; j < &arr[ex % 2][x1 + 2 * len] && j < &arr[ex % 2][x]; j++, bi++) {
*bi = *j;
}
break;
}
}
}
}
ex += 1;
}
if (ex % 2 == 1) {
for (x1 = 0; x1 < x; x1++) {
arr[0][x1] = arr[1][x1];
}
}
}
int main() {
int n, n1;
scanf("%d", &n);
for (n1 = 0; n1 < n; n1++) {
scanf("%d", &arr[0][n1]);
}
error(n);
for (n1 = 0; n1 < n; n1++) {
printf("%d ", arr[0][n1]);
}
return 0;
}