数组中移动0至后面

int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),

使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。

(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)

#include<iostream>
using namespace std;

int fn(int *a, int size)
{
    int *p;
    int i;
    int n;
    int returnval = size;
    p = a;
    n = 0;
    for(i=0;i<size;i++)
    {
        if(*(p+i)==0)
        {
            if(returnval==size)
                returnval = i;
            n++;   
            continue;
        }
        if(n!=0&&*(p+i)!=0)
        {
            *(p+i-n) = *(p+i);
            *(p+i) = 0;
        }
        
    }
    return returnval;
}
int main()
{
    int a[100];
    int i;
    int size;
    int zero;
    while(cin>>size)
    {
       for(i=0;i<size;i++) 
            cin>>a[i];
        zero = fn(a,size);
       for(i=0;i<size;i++) 
        cout<<a[i]<<" ";
        cout<<zero<<endl;
        
    
    }
    return 0;
}


每天早上叫醒你的不是闹钟,而是心中的梦~
原文地址:https://www.cnblogs.com/vintion/p/4116933.html