c++试题(30)

今天早上的面试题9道,比较难,向牛人请教,国内的一牛公司,坐落在北京北四环某大厦:
1、线形表a、b为两个有序升序的线形表,编写一程序,使两个有序线形表合并成一个有序升序线形表h;

解:用归并排序

//归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。
//归并操作的工作原理如下:
//申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
//设定两个指针,最初位置为别为两个已经排序序列的起始位置
//比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
//重复步骤3直到某一指针达到序列尾
//将另一序列剩下的所有元素直接复制到合并序列尾

2、运用四色定理,为N个局域举行配色,颜色为1、2、3、4四种,另有数组adj[][N],如adj[i][j]=1则表示i区域与j区域相邻,数组color[N],如color[i]=1,表示i区域的颜色为1号颜色。

解:


3、用递归算法判断数组a[N]是否为一个递增数组。

解:

int isascend(int a[],int n)
{
   if( n == 1 )
    cout<<"string has only one char"<<endl;
   return 1;
   if( a[n-1] > a[n-2] )
   {
   isascend(a,--n);
   }
}


4、编写算法,从10亿个浮点数当中,选出其中最大的10000个。

解:用冒泡吧。总都是用10000次比较。


5、编写一unix程序,防止僵尸进程的出现.

 

同学的4道面试题,应聘的职位是搜索引擎工程师,后两道超级难,(希望大家多给一些算发)
1.给两个数组和他们的大小,还有一动态开辟的内存,求交集,把交集放到动态内存dongtai,并且返回交集个数
long jiaoji(long* a[],long b[],long* alength,long blength,long* dongtai[])
2.单连表的建立,把'a'--'z'26个字母插入到连表中,并且倒叙,还要打印!
3.可怕的题目终于来了
象搜索的输入信息是一个字符串,统计300万输入信息中的最热门的前十条,我们每次输入的一个字符串为不超过255byte,内存使用只有1G,
请描述思想,写出算发(c语言),空间和时间复杂度,
4.国内的一些帖吧,如baidu,有几十万个主题,假设每一个主题都有上亿的跟帖子,怎么样设计这个系统速度最好,请描述思想,写出算发(c语言),空间和时间复杂度,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值