您的位置:首页 > 职场人生

2011.11.5 一道微软面试题

2011-11-05 02:03 232 查看
看到CSDN上的一个面试题,呵呵,很简单的,以开始想得复杂了,做题之前一定要好好想想!想清楚了再下手!

用函数:
moveSubArrayToTheEnd(int[] array, int numberOfElements)

传入一个数组如 {1,2,3,4,5,6,7}
将数组前面 head的一个子集移到数组末尾end
如input numberOfElements=3,则{1,2,3,4,5,6,7}=>{4,5,6,7,1,2,3}
input numberOfElements=5,则{1,2,3,4,5,6,7}=>{6,7,1,2,3,4,5}
如何写出该算法?

其实数组大小问题我很纠结,我也不知道该怎么处理它的大小问题,所以只能加个参数了,麻烦知道的朋友告诉我该怎么处理那个数组的大小问题吧,谢谢了。

#include <iostream>
#include <cstdlib>
using namespace std;
void MoveSubArrayToTheEnd(int array[],int arrayLength ,int numberOfElements)
{
int temp,n,i,j;
n=arrayLength-numberOfElements;
for(i=0;i<n;++i)
{
temp=array[arrayLength-1];
for(j=arrayLength-1;j>0;--j)
array[j]=array[j-1];
array[j]=temp;
}
}//MoveSubArrayToTheEnd
void print(int array[],int arrayLength)
{
for(int i=0;i<arrayLength;i++)
cout<<array[i]<<" ";
cout<<endl;
}

int main()
{
int array[7]={1,2,3,4,5,6,7};
int n=sizeof(array)/sizeof(int);
cout<<"The size of the array is:"<<n<<endl;
print(array,n);
MoveSubArrayToTheEnd(array,n,4);
cout<<"After the Reverse"<<endl;
print(array,n);
return 0;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: