需要先在 "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;
size_t m_capacity;
};
template<class T>
MinHeap<T&g

本文介绍了如何使用C++通过最小堆来实现TopK算法,具体步骤包括从文件‘testData.txt’中读取M和N的值,然后利用堆数据结构找到前K个最大元素。
最低0.47元/天 解锁文章
737

被折叠的 条评论
为什么被折叠?



