数组中移动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;
}
每天早上叫醒你的不是闹钟,而是心中的梦~

浙公网安备 33010602011771号