
算法导论
lqh604
这个作者很懒,什么都没留下…
展开
-
算法导论 6.5-8解答
请给出一个时间为O(nlgk)、用来将k个已排序链表合并为一个排序链表的算法。此处n为所有输入链表中元素的总数。假设链表都是由小到大排列。1. 将k个链表的第一个元素取出, 初始化为最小堆S;2. 用 EXTRACT-MIN(S)返回最小元素,并返回链表序号minList;3. 从序号minList的链表中取出表头元素,用INSERT(S,x)加入到堆中;// 此步至关原创 2012-03-24 21:22:20 · 1310 阅读 · 0 评论 -
算法导论 6.3-3解答
证明:在任一含n个元素的堆中,至多有ceiling(n/(2^(h+1)))个高度为h的节点。分析:刚开始分析这道题,犯了结点高度h的错误。 具体问题如下: 对于满二叉树,上述命题成立。但如果是非完全二叉树,命题不成立。举例说明:假设有10个元素,那么高度为1的节点也就是第3层的节点,一共有4个,而不是ceiling(10/2^2))=3个,为什么呢?经过思考以后,对于结点高度的定义原创 2012-03-22 10:21:06 · 6999 阅读 · 5 评论 -
算法导论 6.5-7 笔记
HEAP-DELETE(A, i) 操作将结点 i 中的项从堆A 中删去。将A[i] A[ heap_size(A) ]。 因此在这里需要做条件判断并保持堆的性质操作原创 2012-03-22 11:26:31 · 1288 阅读 · 0 评论