写一个函数int Func(int* A, int nSize)

2017-03-04  本文已影响162人  明白已晚

int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序(按原来顺序),返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)

int Func(int *A, int nSize)
{
    int i, k, t = 1, Flag = 0;
    for (i = 0; i < nSize-1; i++)//循环nSize-1次
    {
        if (A[i] == 0 && Flag == 0)//找出第一个下标为零的
        {
            k = i;
            Flag = 1;         
        
        }
        if (A[i] == 0 && A[i + 1] != 0)//相临两个数后者为零,将其前移t个为零的空间
        {
            A[i + 1 - t] = A[i + 1];
            A[i + 1] = 0;
        }
        else if (A[i] == 0 && A[i + 1] == 0)
        {
            t++;
        }
        
    }
     return k;
}

参考资料

上一篇下一篇

猜你喜欢

热点阅读