堆的概念
最小堆:任一结点的关键码均小于等于它的左右孩子的关键码,位于堆顶结点的关键码最
小
最大堆:任一结点的关键码均大于等于它的左右孩子的关键码,位于堆顶结点的关键码
最大
堆存储在下标为0开始计数的数组中,因此在堆中给定小标为i的结点时:
1、如果i=0,结点i是根节点,没有双亲节点;否则结点i的双亲结点为结点(i-1)/2
2、如果2*i+1>n-1,则结点i无左孩子,否则结点i的左孩子为结点2*i+1
3、如果2*i+2>n-1,则结点i无右孩子,否则结点i的右孩子为结点2*i+2
堆排序的结点表示
typedef struct
{
ElemType *data;
int maxsize;
int cursize;
}Heap;
堆的创建(最小堆)
//从结点(ArraySize-1