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

本文探讨了d叉堆的表示、高度计算以及在堆排序中的EXTRACT-MAX和INSERT操作。同时,分析了Young氏矩阵的特性,包括其数据排序规则和矩阵的有效性判断。通过对d叉堆的操作,理解数据结构在排序算法中的应用,以及矩阵在存储有限数据时的逻辑。
摘要由CSDN通过智能技术生成


6.1 (用插入的方法建堆)我们可以通过反复调用MAX-HEAP-INSERT实现向一个堆中插入元素,考虑BUILD-MAX-HEAP的如下实现方式:
BULID-MAX-HEAP(A)
A.heap-size=1
for i=2 to A.length
   MAX-HEAP-INSERT(A,A[i])
a.当输入数据相同的时候,BULID-MAX-HEAP和BULID-MAX-HEAP’生成的堆是否总是一样?瑞国是,请证明;否则,请举一个反例。
b.证明:在最坏情况下,调用BULID-MAX-HEAP’建立一个包含n个元素的堆的时间复杂度是Θ(nlgn).


(a)不一样。就拿书中建立build-max-heap时的例子。A={4,1,3,2,16,9,10,14,8,7}
build-max-heap生成最大堆过程:A={4,1,3,2,16,9,10,14,8,7}
                             A={4,1,3,14,16,9,10,2,8,7}
                             A={4,1,10,14,16,9,3,2,8,7}
                             A={4,16,10,14,7,9,3,2,8,1}
         最终生成的最大堆为:A={16,14,10,8,7,9,3,2,4,1}
build-max-heap'生成最大堆过程:A={4,1}
                              A={4,1,3}
                              A={4,2,3,1}
                              A={16,4,3,1,2}
                              A={16,4,9,1,2,3}
                              A={16,4,10,1,2,3,9}
                              A={16,14,10,4,2,3,9,1}

         最终生成的最大堆为: A={16,14,10,8,2,3,9,1,4}


6.2(对d叉堆的分析)d叉堆与二叉堆很类似,但(一个可能的例外是)其中的每个非叶结点有d个孩子,而不是仅

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值