int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数intFunc(int* A, int nSize),使A把0移至后面,非0整数移至
数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)
#include"iostream" #include"stdio.h" using namespacestd; int Func(int* a,int nSize) { for (int i=0;i<nSize;i++) { if(a[i]==0) { for (intj=i;j<nSize;j++) { if (a[j]!=0) { inttemp=a[i]; a[i]=a[j]; a[j]=temp; break; } } } } for (int j=0;j<nSize;j++) { if (a[j]==0) { break; } } for (i=0;i<j-1;i++) { for (int k=j-1;k>i;k--) { if (a[k]<a[k-1]) { int tmp=a[k]; a[k]=a[k-1]; a[k-1]=tmp; } } } return j; } intmain(void) { int a[11]={1,2,0,3,0,0,5,7,11,13,16}; Func(a,11); for (int k=0;k<11;k++) { cout<<a[k]<<","; } return 0; }