您的位置:首页 > 其它

数组中移动0至后面

2014-03-05 11:59 225 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法
相关文章推荐