明确:堆为完全二叉树,用一维数组存,为了方便,下标由1开始
1.建堆,用o(n)的复杂度 (可以用数学归纳法证明(核心就是叶子不用down操作))
核心是从非叶子节点往下down
2.查看最小值 heap[1]
3.插入一个值x
size++ heap[size]=x 插入堆的末尾也就是树的最后一个节点,然后做up[size]
4.删除堆顶
heap[1]=heap[size] size-- down[1]
5.删除任意一个值 k
heap[k]=heap[size] size-- up[k]/downp[k] 这里指有可能上浮或者下沉
6.修改任意一个值 k为x
heap[k]=x down(k)/up(k)