基本算法-堆排序及其Java实现
摘要:
(二叉)堆(heap)数据结构是一种数组对象,可以视作一颗完全二叉树,从该二叉树的根开始层次遍历这颗二叉树就可以得到其对应的数组。树的根节点为A[0],对于树中某个节点的坐标i,其左右孩子节点和父亲节点的坐标可以很方便的求得: LEFT(i)=2*i+1; RIGHT(i)=2*i+2; PARENT(i)=i/2 . 有两种二叉堆:最大堆和最小堆。最大堆中,每个节点存储的数值都大于等于其左右两个孩子节点存储的数值,亦即A[i]>=A[LEFT[i]]&&A[i]>=A[RIGHT[i]]。最小堆则正好相反。本文以最大堆为例。 知道了最大堆的定义之后,就要在给定的任 阅读全文
posted @ 2012-10-05 11:24 潘的博客 阅读(1293) 评论(0) 推荐(0) 编辑