堆排序

堆排序首先要了解以下几个基础概念:(如果不知道树或者二叉树是啥,建议先了解基础知识)

(1)完全二叉树

(2)大根堆、小根堆。

 

1 完全二叉树

定义:除了最后一层之外的其他每一层都被完全填充,并且所有结点都保持向左对齐。

则根据定义,可以得到以下两个结论:

(1)满二叉树必定是完全二叉树

(2)非满二叉树中,完全二叉树如左图所示,非完全二叉树如右图所示

            

 

2 完全二叉树来表示数组

根据完全二叉树的定义,可以用完全二叉树结构来维护数组,数组如下:

 那么,完全二叉树可以这样表现:(红数字为数组下标)

从图中可以总结完全二叉树以下规律:

(1)结点的下标为i,则其左子结点的下标为2i+1;其右子结点的下标为2i+2;

(2)子结点的下标为i,则其父结点的下标为(i-1) / 2;

(3)下标为0的父结点还是其本身。

 

3 大/小根堆

堆可以理解为完全二叉树。但是这个完全二叉树,是有一定顺序的。可分为:大根堆和小根堆。

(1)小根堆:每个结点都不大于其子结点。

(2)大根堆:每个结点都不小于其子结点。

 

将上面的完全二叉树改成大/小根堆。

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值