摘要: 堆排序有两个重要的步骤:初始化堆和依次交换(树根和最后一个),然而这两步都涉及堆的调整。以大根堆为例i01234567891011a[i]0162031117849326523从a[1]开始可以保证,结点a[n]的父结点为a[n/2],子结点为a[2*n]和a[2*n+1];初始化的堆如下:要从最后一个非叶子结点开始调整:即从17开始,在17,65,23中选择最大的并交换 交换20与65,由于a[2]与a[5]交换了,a[5]还有子结点,所以要对a[5]进行调整a[5]调整后为: 至此,堆的初始化已经完成了!排序时,每次都是树根a[1]与最后一个叶子结点20交换,之后调整a[1] 65... 阅读全文
posted @ 2014-03-14 21:30 qiaozhe 阅读(180) 评论(0) 推荐(0) 编辑