完全二叉树:数据从上到下,从左到右依次平铺
大顶堆:父节点的值大于左右孩子的节值
小顶堆:父节点的值小于左右孩子的节值
由完全二叉树构建大(小)顶堆的过程就是堆排序的第一步
child=2*parent+1
完全二叉树细节点:在构建的过程中,节点是先左在右,那么意味着父节点上如果存在节点一定存在左子结点
堆排序过程:
1:parent游标指向堆排序当中最末尾的元素
2:parent游标向上移动,直到child游标出现在完全二叉树当中
3:判断左右子节点谁大,谁大child游标就指向谁
4:parent游标指向的值和child游标指向的值进行对比谁大谁做父节点,如果第四步完成交换那么parent指向child游标,child指向2*parent+1的位置,进行维护,直到child游标从树当中移除,或者child的值小于parent的值;如果不交换那么执行第五步
5:继续执行第二步
6:堆顶元素和堆底元素进行互换,堆底元素不再参与大顶堆构建,构建新的大顶堆,重复以上过程,每重复一次完整过程就使一个元素有序