题意:
给你一个数组,你需要重新排列这个数组的元素,使得相邻两个元素的差值呈非递减。
排序后从中间位置开始输出,输出一个后面的输出一个前面的即可。
AC代码:
const int N = 1e5 + 10;
int n, m;
int a[N], b[N];
int main()
{
int t;
sd(t);
while (t--)
{
sd(n);
rep(i, 1, n)
sd(a[i]);
sort(a + 1, a + 1 + n);
int pos = n / 2;
int cnt = 1;
for (int i = pos, j = pos + 1;; i--, j++)
{
if (i < 1 && j > n)
break;
if (j <= n)
b[cnt++] = a[j];
if (i > 0)
b[cnt++] = a[i];
}
rep(i, 1, n)
printf("%d%c", b[i], i == n ? '\n' : ' ');
}
return 0;
}