1、堆的数据结构使用数组进行存储的
2、堆的数据结构按照完全二叉树的结构进行描述,所以这里关于堆的孩子节点和父节点的关系,构成了堆数据中数据获取的一个入口,下标为i的父节点的两个孩子节点的下标分别是2*i ,2*i+1 不同的起始下标,表示可能有所不同。
3、最大堆可以用于排序,复杂度在O(Nlog(N)),对还是实现优先权队列的数据结构基础
4、下面的代码详细描述了最大堆的一些关键操作
#ifndef MAXHEAP_H
#define MAXHEAP_H
#include <memory.h>
#include <iostream>
using namespace std;
/**
最大堆
*/
class MaxHeap
{
public:
int heapSize;
int * heap;
public:
MaxHeap();
MaxHeap(int heapSize);
virtual ~MaxHeap();
void output_heap();
void init_heap(int a[],int n);
int left(int i);
int right(int i);
void max_heapify(int i);
void max_heapify2(int i);
void build_max_heap();
void heap_sort();
};
#endif // MA