用数组和循环知识,转移零元素

把给定长度为10的数组所有零元素后移,非零元素顺序不变。(一直显示运行超时)

img

#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;
}