需要先在 "testData.txt" 文件里面输入M和N
比如2000 10
通过最小堆实现TopK
最小堆通过数组模拟二叉树来实现
#pragma warning(disable:4996)
#pragma once
#include <fstream>
#include <ctime>
const char* FILEIN = "testData.txt";
const char* FILEOUT = "topKResult.txt";
const int BUFFERSIZE = 1024;
template<class T>
void swap(T & a, T & b) {
T c = a;
a = b;
b = c;
}
template<class T>
class MinHeap {
public:
MinHeap(int n = 0);
MinHeap(const MinHeap<int> & minHeap);
~MinHeap();
bool full() const { return m_capacity == m_size; }
bool empty() const { return 0 == m_size; }
const size_t size() const { return m_size; } // 返回当前堆的大小
const T & top() const { return m_elem[0]; } // 返回最小的元素
void insertElem(const T & elem);
void deleteElem();
void resize(int n);
void print(std::ofstream & fout);
private:
T * m_elem;
size_t m_size;