堆排序实现

 

堆排序的基本思想:将array[n]的数组看成一棵完全二叉树。父节点均大于其左右子节点的,为大根堆;父节点均小于其左右子节点的,为小根堆。

1) 初建堆--从length/2节点开始,自底向上调整,使array[n]成为一个大顶堆;

2) 交换堆顶元素(最大值)和最后一个元素,将移走最大元素后的剩余元素,从堆顶开始再调整为堆;

3) 重复步骤2)n-1次,则实现array[n]升序排列。

堆调整过程:

1) 从待调整元素i开始开始调整,自顶向下地作如下调整:

2) 将待调整元素与其左右孩子节点比较,三者中最大者作为新的父节点;

3) 若2)中存在元素交换,则将交换后的孩子节点作为待调整节点,转向第2)步;否则,结束调整。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值