算法导论 9.1-1 求第二小元素
2012-09-16 14:20
387 查看
一、题目
证明:在最坏情况下,利用n+ceil(lgn)-2次比较,即可得到n个元素中的第2小元素。(提示:同时找最小元素)二、思考
step1:对所有元素,两个一组比较大小,小的一个进入下一轮比较。一直到比较出最小的元素。此时所有比较结果构成一棵二叉树。比较次数为n-1。step2:沿着树从树根向下到叶子,找出第二小的元素,比较次数是ceil[lgn]-1。令m2[p]表示以p为根的树中的第二小元素。对于当前处理结点为p,key[p] = min{key[left[p]], key[right[p]]}。假设key[p] = key[left[p]],则m2[p] = min{m2[left[p]], key[right[p]]}
三、代码
产品代码测试代码相关文章推荐
- 算法导论 9.1-1 求第二小元素
- 算法导论 9.1-1 求第二小元素 (这篇文章写的很好转来学习)
- 算法导论 9.1-1 求第二小元素
- 算法导论(第三版)习题解答9.1-1(找第二小的元素)
- 算法导论 9.1-1 求第二小元素
- 《算法导论》笔记 第9章 9.1最小值和最大值
- 《算法导论》习题2.3-7 查找集合S中是否有两个元素和为X---Java实现
- 算法导论9.1-1
- 利用最小元素找第二小元素(算法有待进一步优化)
- 算法导论--在平均线性时间下选择元素
- 算法导论Java实现-删除堆中元素HeapDelete(习题6.5-7)
- 《算法导论》课后习题 9.1-1
- 算法导论9.3-8-设X[1..n]和Y[1..n]为两个数组,每个都包含n个已排好序的数,给出一个求数组X和数组Y中所有2n个元素的中位数
- 9.1数组与字符串(六)——若M*N矩阵中某个元素为0,则将其所在的行与列清零
- 算法导论CLRS 9.1 最大值和最小值
- 程序员面试金典: 9.1数组与字符串 7若M*N矩阵中某个元素为0,则将其所在行与列清零
- 算法导论之选取第j小的元素
- 算法导论第七章思考题7-2针对相同元素的快速排序-c++
- 算法导论-7-2 针对有相同元素值的快速排序
- 算法导论CLRS 9.2 选择第i小的元素