算法,是系统软件开发,甚至是搞软件的技术人士的核心竞争力,这一点,我坚信不疑.践行算法实践,已经有一段时间没有practise了,今天来一个相对麻烦点的,堆排序. 1. 什么是堆(Heap) 这里说的堆,是一种数据结构,不是指计算机系统中的存储类型.堆是一种完全二叉树.说到完全二叉树,估计很多人都会想问,什么是完全二叉树,那满二叉树呢?先看看定义完全二叉树和满二叉树: 满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点.在满二叉树中,每一层上的结点数都达到最大值,即在满…