1、堆排序定义
n个关键字序列K1,K2,K2......,Kn成为堆,当且仅当该序列满足如下性质(简称为堆的性质)
(1)Ki<=K2i且Ki<=K2i+1或(2)Ki>=K2i且Ki>=K2i+1(1<=i<=[n/2])
(2)若将此序列所存储的向量[1......n]看作一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:
树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。
根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最小者的堆称为小根堆。
根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者的堆称为大根堆。
【例】关键字序列(3,2,5,4,6,1)其对应的大根堆示例如下所示
3、6交换后,导致3,4不符合堆,需要重新调整
堆插入:O(logN)