From 45f383a6659969c8ae5b87626e406cc7bd84cb12 Mon Sep 17 00:00:00 2001 From: yinkanglong_lab Date: Tue, 16 Mar 2021 12:57:02 +0800 Subject: [PATCH] heap --- 数据结构/6.8.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 数据结构/6.8.cpp diff --git a/数据结构/6.8.cpp b/数据结构/6.8.cpp new file mode 100644 index 00000000..56637c72 --- /dev/null +++ b/数据结构/6.8.cpp @@ -0,0 +1,40 @@ +#include +#include + +using namespace std; +class MaxQueue { +public: +// 实现最大堆吧。使用数组实现 + + vector max_queue; + // 创建堆 + MaxQueue(vector vec) { + max_queue=vec; + for(int i=vec.size()-1;i>=0;i--){ + shift_down((i-1)/2); + } + } + // 堆顶值.即队首的元素 + int max_value() { + return max_queue.front(); + } + // 插入元素,插入最后,进行上浮操作 + void push_back(int value) { + max_queue.push_back(value); + shift_up(max_queue.size()-1); + } + // 删除元素,交换到最后删除,进行下降操作。 + int pop_front() { + swap(max_queue.front(),max_queue.back()); + max_queue.pop_back(); + shift_down(0); + } + // 向上调整 + void shift_up(int pos){ + + } + // 向下调整 + void shift_down(int pos){ + + } +}; \ No newline at end of file