本文主要是介绍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++哈希堆的实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!