在含有 n 个元素的小顶堆中增加一个元素且调整为新的小顶堆。

在含有 n 个元素的小顶堆中增加一个元素且调整为新的小顶堆。

算法:由于原来 n 个元素已经是堆,所以调整时仅需从 A[n+1]出发,走一条从叶子结点 A[n+1] 到根结点 A[1]的路径,将该结点与其父亲结点比较,若比父亲结点小,则与父亲 结点交换,再继续跟上一层父亲结点比较。直到根结点为止;若在某层,该结点比父 亲结点大,则算法结束,这时 A[1…n+1]个结点已经成为小顶堆。

void heapsort(datataye A[1..n],datatype x){
  int i,j,n;
  n++;
  j=n;
  while(j>1){
    i=j/2;
    if(A[i]<x) break;
    else{
      A[j]=A[i];
      j=i;
    }
  }
  A[j]=x;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值