堆排序是利用堆(每个节点大于(大堆顶)或小于(小堆顶)子节点的二叉树)来排序的算法
基本思想:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了
升序用大堆顶,降序用小堆顶
二叉树前中后遍历:
前序:由上到下,先左后右依次遍历;
中序:从下到上,左中右顺序遍历;
后序:从下到上,先左后右依次遍历
例:
前序:GDAFEMHZ
中序:ADEFGHMZ
后序:AEFDHZMG