堆排序
廖家龙 用心听,不照做

堆:n个关键字序列L[1…n]称为堆,当且仅当该序列满足:(1<=i<=(n/2)(取下界))
1)若L(i)<=L(2i)且L(i)<=L(2i+1),则称该堆为小根堆
2)若L(i)>=L(2i)且L(i)>=L(2i+1),则称该堆为大根堆

在排序过程中将L[1…n]视为一棵完全二叉树的顺序存储结构

堆的初始化(以大根堆为例):

堆排序(不稳定的算法):不断的输出栈顶元素,并向下调整【时间复杂度为O(nlog2(n))】【空间复杂度为O(1)】

适用于顺序存储(链式存储)

堆的插入:将新结点放置在末端然后进行向上调整