这道题关注一下提示就知道大概思路了,但仍有两个地方需要注意:
①每完成一次输入就给出相应输出
②每一次都分配一个数组空间,而不能在for循环外定义一个空间足够大的数组反复使用。
#include <stdio.h>
void Reorder(int Num[], int length)
{
if (length <= 1)
return;
int low = 0, high = length - 1;
while (low < high)
{
while (Num[low] < 0 && low < high)
low++;
while (Num[high] > 0 && low < high)
high--;
int temp = Num[low];
Num[low] = Num[high];
Num[high] = temp;
}
}
int main()
{
int T, length;
scanf("%d", &T);
for (int i = 1; i <= T; i++)
{
scanf("%d", &length);
int Num[length];
for (int j = 0; j < length; j++)
scanf("%d", &Num[j]);
Reorder(Num, length);
for (int j = 0; j < length; j++)
printf("%d ", Num[j]);
printf("\n");
}
return 0;
}
欢迎讨论交流。