现在的位置: 首页 > 综合 > 正文

堆排序实现

2018年03月21日 ⁄ 综合 ⁄ 共 853字 ⁄ 字号 评论关闭

 

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

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

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

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

堆调整过程:

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

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

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

 

 

 

抱歉!评论已关闭.