#define MinData (-32767)
typedef int ElementType;
struct HeapStruct;
typedef struct HeapStruct *PriorityQueue;
struct HeapStruct
{
int Capacity;
int Size;
ElementType *Elements;
};
PriorityQueue initialize(int MaxElemenes)
{
PriorityQueue H;
H=(PriorityQueue)malloc(sizeof(struct HeapStruct));
H->Elements=(ElementType *)malloc((MaxElemenes+1)*sizeof(ElementType));
H->Capacity=MaxElemenes;
H->Size=0;
H->Elements[0]=MinData;
return H;
}
void PercDown(PriorityQueue H, int i)
{
ElementType Tmp;
int child;
for (Tmp=H->Elements[i]; 2*i <= H->Size; i= child)
{
child= i*2;
if (child!=H->Size && H->Elements[child+1] < H
用线性时间算法建立二叉堆。
最新推荐文章于 2024-08-15 19:32:27 发布
本文介绍了一个线性时间复杂度的算法来构建二叉堆。首先定义了二叉堆的数据结构,然后通过`initialize`函数初始化堆,`PercDown`函数调整堆,最后`BuildHeap`函数用于构建堆。在`main`函数中,用一个示例数组演示了构建过程并打印出结果。
摘要由CSDN通过智能技术生成