在理解堆排序前,先理解下什么是堆?
堆:所谓的堆就是一颗完全二叉树的每个节点都不大于子节点。
完全二叉树:二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
堆:所谓的堆就是一颗完全二叉树的每个节点都不大于子节点。
完全二叉树:二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
堆排序的核心思想:
(1)先将数据排序成一个堆
(2)输出堆顶
(3)将最后一个节点(最低层,最右边)放入堆顶
(4)调整使之成为一个堆
(5)重复 (2)~(4) 过程,直到全部输出
(1)先将数据排序成一个堆
(2)输出堆顶
(3)将最后一个节点(最低层,最右边)放入堆顶
(4)调整使之成为一个堆
(5)重复 (2)~(4) 过程,直到全部输出