template<typename T>
class lyhMinHeap{
public:
lyhMinHeap(int size = 10){
maxSize = size;
heap = new T[maxSize];
curSize = 0;
}
bool Insert(const T& x){
if(curSize >= maxSize){
cout << "满了" << endl;
return false;
}
heap[curSize] = x;
siftUp(curSize);
curSize++;
return true;
}
void output(){
for(int i = 0; i < curSize; i++)
cout << heap[i] << ", ";
cout << endl;
}
bool RemoveMin(T& x){
if(curSize <= 0){
cout << "empty!!" << endl;
return false;
}
x = heap[0];
heap[0] = heap[curSize-1];
curSize--;
siftDown(0,curSize-1);
return true;
}
private:
T* heap;
int curSize;
int maxSize;
void siftUp(int start){
int cur = start;
int parent = (cur+1)/2 -1;
T temp = heap[cur];
while(parent >= 0){
if(heap[parent] > temp){
heap[cur] = heap[parent];
cur = parent;
parent = (cur+1)/2 -1;
}else
break;
}
heap[cur] = temp;
}
void siftDown(int start, int end){
int cur = start;
int lc = 2*cur +1;
T& temp = heap[cur];
while(lc <= end){
if(lc+1 <= end && heap[lc+1] < heap[lc]) lc++;
if(heap[lc] < temp){
heap[cur] = heap[lc];
cur = lc;
lc = 2*cur +1;
}else
break;
}
heap[cur] = temp;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!