思考题
8-1 比较排序的平均情况下界
a)n个不同的元素对应n!个不同的输入,因此只有这n!个输入所对应的叶结点是有概率的,其余概率均为0。 由于这n!种输入的出现是等概率的,每一种的都是1/n1,因此其对应的叶结点的概率也是1/n! b)设T(n)是一个叶子结点n的在决策树T上的深度,RT(n)、LT(n)分别表示n在T的右、左子树上的深度。 那么T(n)=RT(n)+1或T(n)=LT(n)+1 因此D(T)=D(RT)+D(LT)+k c)后面这几题,以我有限的智商和数学能力理解不了,也看不懂网上的答案,不写了
8-2 以线性时间原地转换排序
a)计数排序 b)快速排序 c)稳定排序 d)基数排序要求所使用的排序方法是满足的(条件2),如果要在O(bn)时间内完成,所使用算法的时间应该是O(n)(条件1),所以只有a可以 e)不稳定
8-3 排序不同长的数据项
a)先用计数排序算法法按数字位数排序O(n),再用基数排序的方法分别对每个桶中的元素排序O(n) b)递归使用计数排序,先依据第一个字母进行排序,首字相同的放在同一组,再对每一组分别使用计数排序的方法比较第二个字母 见到有人用字典树,也是可以的
8-4 水壶
a)最原始的比较方法,所有的红水壶与所有的蓝水壶依次比较 c)算法类似于快排,由于不是同种颜色的水壶之间比较,所以采用交叉比较 step1:从红色水壶中随机选择一个 step2:以红色水壶为主元对蓝色水壶进行划分 step3:划分的结果是两个数组,并得到与红色水壶相同大小的蓝色水壶 step4:以这个蓝色水壶为主元,对红色水壶进行划分 step5:用step1到step4的过程不断迭代
8-5 平均排序
见6.5-8堆排序-K路合并 a)1排序是完全排序 b)1,3,2,4,5,7,6,8,9,10 c)分工展开化简即可 d) step1:分别把1, 1+k, 1+2k, 1+3k,……;2, 2+k, 2+2k, 2+3k,……;……当作是单独的集合 step2:对每个集合进行排序时间为O(nlg(n/k)) e) step1:同d)step1 step2:用堆排序进行k路合并
8-6 合并已排序列表的下界
a)2n个数,随机选n个数,可选的方法有C(2n,n)种 b)
只能推到这了,最后怎么算,还希望高手指点 c)d)看上去很显然的事情,不知道怎么证
Last updated