问答题
试题四(共15分)
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
堆数据结构定义如下:
对于n个元素的关键字序列{al,a2,…,an},当且仅当满足下列关系时称其为堆。

在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素为最小元素,则称
为小顶堆。堆常用完全二叉树表示,图4-1是一个大顶堆的例子。
问答题
【问题1】(10分)
根据以上说明和c代码,填充c代码中的空(1)~(5)。
【正确答案】(1)A->int_array[0]
(2)A->int_array[0]= A->int_array[A->array_size-1]
(3)A-> array_size-1
(4)A->int_array[PARENT(i)]int_array[i]=key
【答案解析】
问答题
【问题2】(3分)
根据以上c代码,函数heapMaximum, heapExtractMax和maxHeaplnsert的时间复杂度的紧致上界分别为(6)、(7)和(8)(用O符号表示)。
【正确答案】(6)O(1) (7)O(lgn) (8)O(lgn)
【答案解析】
问答题
【问题3】(2分)
若将元素10插入到堆A=(15,13,9,5,12,8,7,4,0,6,2,1)中,调用maxHeaplnsert函数进行操作,则新插入的元素在堆A中第(9)个位置(从1开始)。