堆:实质是一颗完全二叉树,最大堆的特点:父节点值均大于子节点:最小堆的父节点值均小于子节点: 一般使用连续内存存储堆内的值,因而可以根据当前节点的索引值推断子节点的索引值: 节点i的父节点为(i-1)/2: 节点j的左子结点:j * 2 + 1; 节点j的右子结点:j * 2 + 2; 以下代码实现了最大堆最小堆,当比较函数使用std::greater,得到最大堆,当比较函数使用std::less得到最小堆: 代码及测试用例如下: //最大最小堆 //MaxMinHeap.h #pragma o…