问题 单项选择题

对于关键码序列18,30,35,10,46,38,5,40,进行堆排序(假定堆的根结点是最小关键码),在初始建堆过程中需进行的关键码交换次数为( )。

A.2次

B.3次

C.4次

D.5次

答案

参考答案:B

解析: 原始的堆如图1所示:
[*]
因为n=8,所以n/2=4,所以从K4=10开始,第一次比较10<40,不用交换:第二次比较35>5,两者相互交换,交换后如图2所示:第三次比较30>10,两者相互交换,交换后如图3所示;第四次比较 18>5,两者相互交换,交换后如图4所示。所以交换的次数为3次。
[*]
[*]
[*]

多项选择题
单项选择题