最小堆的实现代码:
/*
* 最小堆是一颗完全二叉树(这里用数组实现完全二叉树)
* index: 0 1 2 3 4 5 6
* value: [空] a b c d
*
* 任意index,其父亲为index/2,左儿子为2*index,右儿子为2*index + 1
* 时间复杂度: O(logN)
*/
#include<iostream>
#include<vector>
using namespace std;
template<typename Comparable>
class BinaryHeap
{
public:
explicit BinaryHeap(int capacity)
{
currentSize = 0;
array.resize(capacity);
};
explicit BinaryHeap(const vector<Comparable> &items);
bool isEmpty() const;
const Comparable& findMin() const;
void