堆排序
堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了
完全二叉树:
要求数据必须从上到下,从左到右依次进行平铺
大顶堆:
在完全二叉树的基础上,每个结点的值都大于或等于其左右孩子结点的值
堆排序理论过程:
1.完全二叉树
2.构建大顶堆
3.维护大顶堆使数据变得有序起来
实际过程:
1.给每个节点加上下标
可得出节点下标的规律:
N[i]的左子树N[2*i+1]
N[i]的右子树N[2*i+2]
N[i]的父节点N[(i-1)/2]