自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 问答 (1)
  • 收藏
  • 关注

原创 最坏为线性时间的查找第i小元素

既然是线性时间查找元素,那么我们每次划分时都需要均衡划分。所以我们每次总是取中位数辅助数组B的中位数x为原数组A的主元进行划分。开始我卡在书中第三步了,没有想出如何递归的找到中位数x。于是我试图要对得到的中位数辅助数组B排序以找到数组B中的中位数。这样带来的问题是在对含有n/5个元素的数组B排序时,可能会不是线性时间,而用线性时间排序算法又有很多限制。这个代码我就不贴出来了以免误导网友。然后经

2014-01-31 20:39:37 5960 2

原创 算法导论第九章课后答案

9.1-1 证明:在最坏情况下,找到n个元素中第二小的元素需要n+向上取整lgn-2次比较。我们对于查找第2小元素分成2步。step1:我们先将数组中的元素两两成对比较,共需n/2次比较,那么就有n/2个元素是较小的元素,然后再将这些较小的元素再次两两成对比较,又淘汰一半,重复这样的循环,每次淘汰一半元素直到只剩下1个元素,该元素就是最小元素。经过的比较次数为S=n/2+n/4+...(n

2014-01-28 12:30:51 28154 7

原创 算法导论第八章思考题

8-1(比较排序的概率下界) 在这一问题中,我们将证明对于给定的n个互异的输入元素,任何确定或随机的比较排序算法,其概率运行时间都有下界Ω(nlgn)。首先分析一个确定的比较排序算法A,其决策树为Ta,假设A的输入的每一种排列情况都是等可能的。a) 假设Ta的每个叶子结点都标有在给定的随机输入情况下到达该结点的概率。证明:恰有n!个叶子结点标有1/n!,其他的叶结点标记为0.因为对于n个元

2014-01-20 17:49:03 21410 7

原创 算法导论第八章线性时间排序课后答案

8.1-1 在一颗比较排序算法的决策树中,一个叶结点可能的最小深度是多少?最少进行n-1次比较,所以深度最小是n-18.1-2不用斯特林近似公式,给出lg(n!)的渐近紧确界,利用A.2节介绍的技术来求累加和∑lgk.∫(lgk)dk=klgk-∫kd(lgk)=klgk-(1/ln2)k  所以∑lgk=(nlgn-1lg1)-(1/ln2)(n-1)=nlg

2014-01-19 14:09:13 12056 12

原创 算法导论第七章最后思考题

7-1(Hoare划分的正确性) 本章中的PARTITION算法并不是其最初版本。下面给出的是最早由C.R.Hoare所设计的划分算法:HOARE-PARTITION(A,p,r)1. x=A[p]2. i=p-13. j=r+14. while TRUE5.         repeat6.                j=j-17.         until

2014-01-12 21:10:04 5693 6

原创 算法导论第七章课后答案

7.1-1 参照图7-1的方法,说明PARTITION在数组A={13,9,9,5,12,8,7,4,21,2,6,11}上的操作过程。A={13,19,9,5,12,8,7,4,21,2,6,11}  ={13,19,9,5,12,8,7,4,21,2,6,11}  ={13,19,9,5,12,8,7,4,21,2,6,11}  ={9,19,13,5,12,8,7,4,2

2014-01-09 19:55:00 14899 6

原创 算法导论第六章堆排序思考题

6.1 (用插入的方法建堆)我们可以通过反复调用MAX-HEAP-INSERT实现向一个堆中插入元素,考虑BUILD-MAX-HEAP的如下实现方式:BULID-MAX-HEAP(A)A.heap-size=1for i=2 to A.length   MAX-HEAP-INSERT(A,A[i])a.当输入数据相同的时候,BULID-MAX-HEAP和BULID-MAX-HE

2014-01-07 15:28:18 2500 2

原创 算法导论第六章6.5优先队列课后答案。

6.5-1 试说明HEAP-EXTRACT-MAX在堆A={15,13,9,5,12,8,7,4,0,6,2,1}上的操作过程。HEAP-EXTRACT-MAX(A)if(A.heap-size<1) //堆中元素是否为空 error"heap underflow" //如果是空的,那么返回错误max=A[1] //将最大堆最大元素也就是

2014-01-05 19:30:35 4341

原创 算法导论第六章6.5有限队列中的6.5-9课后练习

由题目提示知,需要用到归并排序,又要用到最小堆,那么我想到用含有最小堆排序的归并排序对k个有序数组进行合并因为链表可以看成特殊的动态数组,那么我把链表替换成数组求解。先把k个数组放入到一个新数组A中,那么一共就有k=n/a个数组(a为k个元素数组中所含最多元素的数量)#include using namespace std;const length=100;int LEFT(int i)

2014-01-05 14:20:46 2147 1

原创 算法导论第六章堆排序所给的伪代码转换具体程序

首先SHOW下我自己写的不带类的C++程序:#include using namespace std;const length=100;int Heap_size(int A[]);//始终是数组内从后往前数的第一个非0数开始的一组数。int PARENT(int i);//父节点int LEFT(int i);//左孩子结点int RIGHT(int i);//有孩子结点

2014-01-03 19:06:44 2230 4

原创 算法导论第六章6.3建堆和6.4堆排序算法课后答案

6.3-2 在BUILD-MAX-HEAP的第2行代码中,为什么希望循环下标i从向下取整leghth[A]/2降到1,而不是从1升到向下取整leghth[A]/2?因为如果用递增循环从下标i=1开始,那么i的两个左右子树对于任意排序的数组来说就可能出现左右子树不是最大堆的情况(使用MAX-HEAPIFY(A,i)函数必须满足左右子树是最大堆)。    如果用递减循环从下标i

2014-01-02 19:14:12 5946 1

原创 算法导论第六章6.2维护堆的性质课后答案

6.2-1参照图6.2的方法,说明MAX-HEAPIFY(A,3)在数组A={27,17,3,16,13,10,1,5,7,12,4,8,9,0}上的操作过程。操作过程参照书中图6.2,非常类似。6.2-2参考过程MAX-HEAPIFY,写出能够维护相应最小堆的MIN-HEAPIFY(A,i)的伪代码,并比较MIN-HEAPIFY与MAX-HEAPIFY的运行时间。

2014-01-01 20:28:58 3370 1

原创 算法导论第六章6.1堆课后答案

6.1-1在高度为h的堆中,元素个数最多和最少分别是多少?最少是最底层只有一个叶子结点:2^0+2^1+...+2^(h-1)+1=2^h最多是这个堆(包括最底层)是一个完全二叉树:2^0+2^1+...+2^(h-1)+2^h=2^(h+1)-16.1-2证明:含n个元素的堆的高度为lgn.设这个堆的高度为h这个堆的总结点2^0+2^1+...+2^(

2014-01-01 19:49:47 8960 7

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除