堆排序的实例化(详细过程)

来源:互联网 发布:汉诺塔c语言程序代码 编辑:程序博客网 时间:2024/05/21 10:12

数组a[] = {8,10,23,48,7,6,11,13,17,19,20,14,5}在堆(完全二叉树)中表示为:
这里写图片描述
一共13个数,在经过大项堆的初始后,数组的首位为最大值,此时完全二叉树为:
这里写图片描述
将48和5对换位置后,得到数组的最后一位为最大值,此时的完全二叉树为:
这里写图片描述
并再次进行大项堆的初始化操作,因为已经确定数组最后一位为最大数,所以此时的完全二叉树为:

这里写图片描述
将23和5对换位置后,得到数组的倒数第二位23为第二大值,并再次进行大项堆的初始化操作,如此即可得到最后的排序好的数组:
第一轮:20,19,1417,8,6,11,13,10,5,7,23,48
第二轮:19,17,14,13,8,6,11,7,10,5,20,23,48
第三轮:17,13,14,10,8,6,11,7,5,19,20,23,48
第四轮:14,13,11,10,8,6,5,7,17,19,20,23,48
第五轮:13,10,11,7,8,6,5,14,17,19,20,23,48
第六轮:11,10,6,7,8,5,13,14,17,19,20,23,48
第七轮:10,8,6,7,5,11,13,14,17,19,20,23,48
第八轮:8,7,6,5,10,11,13,14,17,19,20,23,48
第九轮:7,5,6,8,10,11,13,14,17,19,20,23,48
第十轮:6,5,7,8,10,11,13,14,17,19,20,23,48
第十一轮:5,6,7,8,10,11,13,14,17,19,20,23,48 排序结束
最终的完全二叉树:
这里写图片描述

1 0
原创粉丝点击