int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)
#include <iostream>using namespace std;int a[9]={0,2,0,1,0,5,6,8,0};int fun(int arr[],int length){int i,j;for(i = 0,j = i+1;i<length;){
if(arr[i] == 0){
if(arr[j] ==0){
j++;
if(j == length){
break;}
}
else{
arr[i] = arr[j];arr[j] = 0;}
}
else{
i++;
}
}
return i;}void show(){for(int i=0;i<sizeof(a)/sizeof(int);i++){
cout<<a[i]<<" ";}
}int main(){cout<<fun(a,sizeof(a)/sizeof(int))<<endl;show();
return 0;}
一道面试题
最新推荐文章于 2021-12-04 11:34:20 发布