摘要: 最近发现自己在高级数据结构方面好薄弱的,于是看了很多文档,发现这篇不错。数据结构——堆的操作和实现当应用优先级队列或者进行堆排序时,一般利用堆来实现。堆是一个完全(除最底层外都是满的)二叉树,并满足如下条件:1、根结点若有子树,则子树一定也是堆。2、根结点一定大于(或小于)子结点。因为要求堆必须是完全二叉树,所以可以用线性的数据结构,比如数组,来实现堆。利用数组实现,则对于长为N的堆中的元素从0到N-1排列,有:i的父结点:Parent(i)=(i+1)/2-1i的左叶子:Left(i)=(i+1)*2-1i的右叶子:Right(i)=(i+1)*2堆的操作主要以一个“堆化”(Heapify) 阅读全文
posted @ 2012-08-22 09:22 一生挚爱 阅读(135) 评论(0) 推荐(0)