博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
堆实例
阅读量:6817 次
发布时间:2019-06-26

本文共 2116 字,大约阅读时间需要 7 分钟。

#include 
using namespace std;class A{ public: A(int *data, int len){} }; template
class MaxHeap{ private: T *datas; int MaxSize; int currentSize; void KeepHeap(int root); bool del; public: MaxHeap(int MaxSize); MaxHeap(T *datas, int length); ~MaxHeap(); bool Insert(T data); T GetMax(); void RemoveMax(); void PrintHeap(){ for (int i=1; i<=currentSize; i++) { cout << datas[i] << " "; } cout << endl; } int GetCurrentSize() { return currentSize; } //void BuildMaxHeap(T *datas); }; template
MaxHeap
::MaxHeap(T *datas, int length) { this->datas = datas; currentSize = length; MaxSize = currentSize; for (int i=currentSize/2; i>0; i--) { KeepHeap(i); } del = false; } template
MaxHeap
::MaxHeap(int MaxSize) { this->MaxSize = MaxSize; datas = new T[this->MaxSize+1]; this->currentSize = 0; del = true; } template
MaxHeap
::~MaxHeap() { if(del) delete []datas; } template
bool MaxHeap
::Insert(T data) { if (currentSize+1 > MaxSize) { return false; } datas[++currentSize] = data; int index = currentSize; int temp = (index)/2; while (temp>=1) { if (datas[temp]
T MaxHeap
::GetMax() { return datas[1]; } template
void MaxHeap
::KeepHeap(int root) { int temp = datas[root]; while (root*2<=currentSize) { int child = root*2; if (child+1<=currentSize && datas[child] < datas[child+1]) { child++; } if (temp > datas[child]) { break; }else { datas[root] = datas[child]; } root = child; } datas[root] = temp; } template
void MaxHeap
::RemoveMax() { int temp = datas[1]; datas[1] = datas[currentSize]; datas[currentSize] = temp; currentSize--; KeepHeap(1); } void MinK(int *data, int length, int k) { MaxHeap
heap(length); for (int i=1; i
heap.GetCurrentSize()) { heap.Insert(data[i]); }else{ if (data[i]
h(4); // h.Insert(1); // h.Insert(2); // h.Insert(3); int data[] = {-1,15,24,3,8,7,6,5,7}; int len = sizeof(data)/sizeof(int); MaxHeap
h(data, len-1); for (int i=1; i

转载地址:http://wgbzl.baihongyu.com/

你可能感兴趣的文章
inotify用法简介及结合rsync实现主机间的文件实时同步
查看>>
php 判断手机登陆
查看>>
git 问题
查看>>
Fedora18设置终端快捷键 和 桌面快捷方式
查看>>
取消NavigationBar左右两边的空隙
查看>>
Ubuntu 12.04 Gedit中文乱码解决办法
查看>>
修改symfony sfDoctrineGuardPlugin验证密码的方法
查看>>
Vbird的Linux私房菜学习笔记之正则表达式-特殊字符
查看>>
数据的作用域
查看>>
js中括号用于自执行测试
查看>>
ssh 公钥 密钥
查看>>
c#设计模式-单例模式
查看>>
Ehcache web cahce 缓存改良版
查看>>
F5集群配置公共irule,解决X-Frame-Options漏洞及host头漏洞
查看>>
mysql 创建日期列之timestamp
查看>>
VMM系列之使用VMM服务器构建 Hyper-V主机(4)
查看>>
详测 Generics Collections TList (7): Items、Contains
查看>>
配置FTP服务器(2) 本地用户下载和上传
查看>>
多线程编程(11) - 多线程同步之 Mutex (互斥对象)[续]
查看>>
【Java每日一题】20161214
查看>>