心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
void heap_adjust(long a[],long begin,long end)
{
    
long i,m;
    m
=a[begin];
    
for(i=begin*2;i<=end;i*=2)
    
{
       
if( i<end && a[i]>a[i+1] )
          i
++;
       
if( m<=a[i] )
          
break;
       a[begin]
=a[i];
       begin
=i;
    }

    a[begin]
=m;
}
    /*调整,使之成为一个堆*/

Ps:

    1.对堆的调整从顶至下进行。

    2.创建一个新堆应该从最后一个叶结点的父结点开始逐步向上调整。

    3.对heap[s..m]能够调整成功,需要heap[s+1..m]严格满足堆的定义。

posted on 2010-01-06 18:23 lee1r 阅读(113) 评论(0)  编辑 收藏 引用 所属分类: 算法与数据结构

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理