您的位置:首页 > 其它

网易校园招聘笔试题目

2012-02-15 21:59 357 查看
1 两个数组x[]、y[],长度为n,而且都经过排序从小到大排列,请编写C/C++程序求出两个数组合并后(仍然从小到大排列)的中位数,要求比较次数少于n。

分析:要求出中间的两个数,只要用一个数组来存储前面n+1个数就可以了,所求的必然是 第N 和第N+1 个数。

#include<stdio.h>

#include<stdlib.h>

#define N 4

int main()

{

int i=0,j=0,k=0;

int a
={1,2,3,6};

int b
={7,8,90,99};

int c[N+1];

for(k=0;k<=N&&i<N&&j<N;k++)//当k>N跳出循环,此时c[1....N] 全部填满。

{ if(a[i]<=b[j])

{

c[k]=a[i];

i++;

}

else

{

c[k]=b[j];

j++;

}

}

if(i==N&&k<=N) c
=b[j];//如果是由于i==N跳出循环,则要考虑到c
没有放数据,所以单独赋值。

if(j==N&&k<=N) c
=a[i];

printf("%d,%d",c[N-1],c
);

system("pause");

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