美文网首页
写一个函数int Func(int* A, int nSize)

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

作者: 明白已晚 | 来源:发表于2017-03-04 10:16 被阅读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;
    }
    

    参考资料

    相关文章

      网友评论

          本文标题:写一个函数int Func(int* A, int nSize)

          本文链接:https://www.haomeiwen.com/subject/zoydgttx.html