摘要: 堆,实际上是一颗完全二叉树,且满足性质:其根节点的关键字不小于(或不大于)其左右孩子节点。 即满足key[i]>=key[2i+1]&&key[i]>=key[2i+2]的称为大根堆;满足key[i]<=key[2i+1]&&key[i]<=key[2i+2]的称为小根堆()。 以大根堆为例,堆排序算法就是利用了堆的根节点一定是堆中最大的数的结构特点,每次将根节点的关键字和最后一个节点交换,从而得到已排序的部分,和未排序的剩余部分,再将剩余部分调整为堆,重新得到根节点,如此递归调用,直到堆中所有元素已然有序。 举个例子,下图为一个5个节点 阅读全文
posted @ 2013-02-14 23:50 XiaoH在博客园 阅读(232) 评论(0) 推荐(0) 编辑