选择题不太记得了,直接说还有些印象的后面几道题目。
前几到分别考察二分法、二叉树遍历、LRU页面置换算法。
后面算法里如下(大致印象):
1.有两个包甲、乙,甲中有红球800个、蓝球200个,乙中有红球200个、蓝球800个,现随机选一个包,从中选择样本,每次抽取一个球,抽完仍放回包中。现在抽取了11个球,其中红色7个,蓝色4个。问选中的是甲包的概率?
貌似就是一个全概率事件的问题。
2.现有一个数组,其中任意位置A[i] ,与其最终排好序的位置相差为k,2<=k<n,且k 远小于n;即 A[i]在排序之后的位置为[i-k,i+k] 之间。
现要求利用这一信息,对数组进行排序。设计算法,并分析时间复杂度。时间复杂度要求尽可能低(小于O(nk))
在基本有序的情况下,插入排序是一个不错的选择,任意i位置的数,只需要与其前k个数进行比较,总共最多需比较nk次,是O(nk)的算法。
有没有更好的算法?积极思考中。。。。
3.给定一个字符串序列:a,b,c,d, aa,ba,ca,da,ab,bb,cb,db,...,aaa,baa,caa,daa,...
其中a的位置为1,问
1)aaa的位置
2)bcadf的位置
3)1000位置的字符串
4)实现函数find,输入一个字符串,输出它在字符串序列中的位置。
可以看做一颗四叉树,
a,b,c,d
aa,ba,ca,da ab,bb,cb,db ac,bc,cc,dc ad,bd,cd,dd
...
则任意一个字符串,按四进制计算,没