数组中移动0至后面

来源:互联网 发布:决战武林坐骑8升9数据 编辑:程序博客网 时间:2024/06/05 22:57

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


0 0
原创粉丝点击