把给定长度为10的数组所有零元素后移,非零元素顺序不变。(一直显示运行超时)
#include <stdio.h>
#define N 10
int main()
{
int a[N], i, j, u, m;
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
u = 0;
m = 0;
while (u < N && m < N)
{
//找0
while (a[u] != 0 && u < N)
u++;
//找非0
m = u + 1;
while (a[m] == 0 && m < N)
m++;
//互换
if (u < N && m < N)
{
j = a[u];
a[u] = a[m];
a[m] = j;
}
}
for (i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
return 0;
}