这两个url 讲的非常清楚:
1. http://blog.youkuaiyun.com/morewindows/article/details/6709644
2. http://sauron.blog.51cto.com/5231038/1227373
堆是由二叉树表示的, 最常用的存储形式是数组。
堆的插入: 将新的元素放在堆的最后,再将其慢慢移动上去,构成新的堆
堆的删除: 堆的删除只能取出第一个元素。 然后将最后将最后一个元素放在第0的位置上。再让其下沉
堆的构建: 1. 一个元素一个元素的加入,每次都构建新的堆
2. 我们知道叶子节点都是已经好了的,我们依次将非叶子节点下沉,就得到了新堆 o(n*log(n))
堆排序: 每次取出第0个 元素,将其放在数组的最后。 n-1次后就形成了sorted序列。 时间复杂度为 O(n*log(n))