什么是堆?
堆是一棵完全二叉树
最小堆
设堆中任意结点C,其父节点为P,如果结点值P<=C,则为最小堆。
最大堆
设堆中任意结点C,其父节点为P,如果结点值P>=C,则为最大堆。
二叉堆的应用
优先队列(Priority Queue)
优先队列是一种抽象数据类型,优先队列中每个元素都有各自的优先级,优先级最高的元素最先得到服务。优先队列往往用堆来实现。
堆排序(Heap Sort)
堆排序是利用堆来进行排序的一种排序算法。
什么是堆排序?
堆排序是利用堆这种数据结构及操作来实现的一种排序方法。
堆排序是一种选择类排序。
算法步骤
假设待排序序列有n个元素,堆排序可以分为如下三个步骤。
1)建立堆(Build Heap):按元素关键字建立一个堆(最小堆/最大堆);
2)删除最小值(Delete Min):让根节点元素归位;
3)调整堆:重新调整使其继续保持堆的结构性和堆序性。
……待补充