二叉堆C语言实现
二叉堆是一种二叉树,其儿子的值一定不小于父亲的值,树的节点是按从上到下,从左到右紧凑排列的。
有两种操作:
push(x):将x插入二叉堆,并自动维护使二叉堆变得有序。
pop():取出顶部的值(最小值),并返回该值,同时维护二叉堆有序。
代码如下:
#include<stdio.h>
#define MAX_N 1000
int heap[MAX_N];
int sz = 0;
void push(int x)//插入堆的值
{
int now = sz++;//插入节点的编号
while(now > 0)
{
int f = (now - 1)/2;//父亲节点的编号
if(heap[