c++哈希堆的实现
2021/6/16 20:51:35
本文主要是介绍c++哈希堆的实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <iostream> #include <utility> #include <string> #include <cstring> #include <vector> #include <map> #include <set> #include <stack> #include <queue> #include <unordered_map> #include <unordered_set> #include <algorithm> #include <numeric> using namespace std; const int MAX_N = 1024; int heap[MAX_N]; int tail = 0; unordered_map<int, int> hash_map; void push(int v) { int idx = tail++; while (idx > 0) { int p = (idx - 1) / 2; if (heap[p] <= v) { break; } heap[idx] = heap[p]; hash_map[heap[idx]] = idx; idx = p; } heap[idx] = v; hash_map[heap[idx]] = idx; } int top() { return heap[0]; } void pop(int p = 0) { int res = heap[p]; int v = heap[--tail]; int newp = p; while (newp * 2 + 1 < tail) { int mm = newp * 2 + 1, ma = mm + 1; if (ma < tail && heap[ma] < heap[mm]) { mm = ma; } if (heap[mm] > v) { break; } heap[newp] = heap[mm]; hash_map[heap[newp]] = newp; newp = mm; } heap[newp] = v; hash_map[heap[newp]] = newp; heap[tail] = 0; hash_map.erase(res); } void hash_pop(int v) { int idx = hash_map[v]; pop(idx); } int main() { for (int i = 0; i < 6; i++) { push(i); } hash_pop(4); cout << heap[0]; }
这篇关于c++哈希堆的实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04el-table 开启定时器下,表格的选中状态会消失是什么原因-icode9专业技术文章分享
- 2024-10-03如何安装和初始化飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03如何安装 App 并连接到飞牛 NAS?-icode9专业技术文章分享
- 2024-10-03如何安装飞牛 TV 并连接到影视服务器?-icode9专业技术文章分享
- 2024-10-03如何在PVE和ESXI上安装飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS安装系统异常情况处理-icode9专业技术文章分享
- 2024-10-03飞牛NAS如何创建存储空间?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS硬盘会自动休眠吗?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何安装飞牛影视和创建媒体库?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何为家人朋友开通影视账号?-icode9专业技术文章分享