堆排序是简单选择排序的一种改进,主要是为了减少关键码的比较次数。对于堆的定义,其实就是具有一定性质的二叉树,就是每个节点都小于或等于其左右孩子(小顶堆),或者是每个节点都大于或等于其左右孩子(大顶堆)。
算法实现:为了使用堆进行排序,首先需对堆进行初始化和调整。排序的操作过程就是:首先将待排序的记录构造成一个堆,例如大顶堆,然后,选出堆中的最大者,也就是堆顶记录,将它移走,并将剩下的记录再次调整成堆,再找出其中的最大记录,如此反复,直到堆中只剩下一个记录为止。
堆排序是简单选择排序的一种改进,主要是为了减少关键码的比较次数。对于堆的定义,其实就是具有一定性质的二叉树,就是每个节点都小于或等于其左右孩子(小顶堆),或者是每个节点都大于或等于其左右孩子(大顶堆)。
算法实现:为了使用堆进行排序,首先需对堆进行初始化和调整。排序的操作过程就是:首先将待排序的记录构造成一个堆,例如大顶堆,然后,选出堆中的最大者,也就是堆顶记录,将它移走,并将剩下的记录再次调整成堆,再找出其中的最大记录,如此反复,直到堆中只剩下一个记录为止。