当前位置: 首页 > news >正文

深圳微网站搭建个人免费网站建站排名

深圳微网站搭建,个人免费网站建站排名,软件技术可以从事什么工作,网络营销策划书包括哪些内容目录 堆的结构类型定义 最大堆的创建 堆的插入 堆的插入的三种情况 代码实现 哨兵元素 堆的结构类型定义 #define ElementType int typedef struct HNode* Heap; /* 堆的类型定义 */ struct HNode {ElementType* Data; /* 存储元素的数组 */int Size; /* 堆中…

目录

堆的结构类型定义

最大堆的创建

堆的插入

堆的插入的三种情况

代码实现

哨兵元素


堆的结构类型定义

#define ElementType int
typedef struct HNode* Heap; /* 堆的类型定义 */
struct HNode 
{ElementType* Data; /* 存储元素的数组 */int Size;          /* 堆中当前元素个数 */int Capacity;      /* 堆的最大容量 */
};

HNode中的两个成员变量:

一个ElementType类型的指针Data,用于存储堆中的元素;

一个int类型的Size,用于表示堆中当前的元素个数;

还有一个int类型的Capacity,用于表示堆的最大容量。

最大堆的创建

typedef Heap MaxHeap; /* 最大堆 */
typedef Heap MinHeap; /* 最小堆 */#define MAXDATA 1000  /* 该值应根据具体情况定义为大于堆中所有可能元素的值 */MaxHeap CreateHeap(int MaxSize)
{ /* 创建容量为MaxSize的空的最大堆 */MaxHeap H = (MaxHeap)malloc(sizeof(struct HNode));H->Data = (ElementType*)malloc((MaxSize + 1) * sizeof(ElementType));H->Size = 0;H->Capacity = MaxSize;H->Data[0] = MAXDATA; /* 定义"哨兵"为大于堆中所有可能元素的值*/return H;
}

参数MaxSize表示创建的最大堆的最大容量。

首先,使用malloc申请了HNode结构体类型的内存空间。

接下来,使用malloc申请了(MaxSize+1)个ElementType类型的元素的内存空间,并将申请的指针赋值给H->Data,这个Data数组就是用来存储最大堆中的元素的。

而其中,要申请的内存空间不是MaxSize而是MaxSize+1,是因为:

堆的下标是从1开始的,而不是从0开始的。这样设计的原因是为了方便定位节点和父子节点之间的关系。

下标为0的元素我们定义为“哨兵”,其值应该大于堆中所有可能元素的值,哨兵的作用在后面会详细阐述。

堆的插入

堆的插入的三种情况

代码实现

bool Insert( MaxHeap H, ElementType X )
{ /* 将元素X插入最大堆H,其中H->Data[0]已经定义为哨兵 */int i;if ( IsFull(H) ) { printf("最大堆已满");return false;}i = ++H->Size; /* i指向插入后堆中的最后一个元素的位置 */for ( ; H->Data[i/2] < X; i/=2 )H->Data[i] = H->Data[i/2]; /* 上滤X */H->Data[i] = X; /* 将X插入 */return true;
}

首先判断最大堆是否已满,如果已满则返回false。

如果不满,则将堆的大小加1,i指向插入后堆中的最后一个元素的位置。

然后从i开始向上遍历,如果父结点的值小于X,则将父结点的值下移,直到找到X的插入位置。

这其中有一个关键知识点:

H->Data[0]是哨兵元素,它不小于堆中的最大元素,控制循环结束。

哨兵元素

假定没有哨兵元素或哨兵元素的值为0,而最大堆中的第一个元素是里面的最大值。

那我们看个例子:(关注数组下标i的变化)

插入操作的时间复杂度为: T(N) = O({log_{2}}^{N})


end 


学习自:MOOC——陈越、何钦铭

http://www.yayakq.cn/news/23447/

相关文章:

  • 自己如何做购物网站开的免费网站能赚钱吗
  • 专业网站建设教程凡科建站代理商
  • 网站建设沟通话术中国黄页
  • 建设建行积分兑换商城网站网站规划总结
  • 成都网站排名优化开发做网站必须租服务器吗
  • 网页设计与网站建设步骤前端开发工程师培训哪里有
  • 长春电商网站建设公司大型门户网站建设定制
  • 建筑公司网站新年贺词深圳市住建工程交易
  • 福安市教育局建设网站小公司做网站推广好不好
  • 室内设计公司 网站建设大前端 wordpress
  • 视频网站如何做盗链定制网站和模板建站
  • 苏州企业网站seo建设部网站一级建造师
  • 沈阳模板建站哪家好有人免费资源吗
  • 化妆品商城网站方案让网站快速收录
  • 燕窝网站怎么做的wordpress 网站登录
  • 建立本地网站个人简历制作
  • 电商网站建设与运营手机网站设计占工程比重
  • 珠宝怎么做网站开源seo软件
  • 一套企业网站设计图片免费ppt模板下载红色
  • 建设银行茂名网站科汛 kesioncms v8.05 企业网站建设入门视频教程
  • 辽宁省水利建设市场信用信息平台网站网站页面前端基本设计
  • 有服务器有域名如何做网站网站前端设计与制作
  • 做网站维护承包合同网站的方案
  • 制造行业网站建设做网站如何接单
  • 珠海网站制作网络推广网站建设的平台
  • 专业网站托管的公司wordpress源代码怎么看
  • 网站建设资讯平台php文件打开乱码
  • 网站做游戏活动免费建设旅游网站
  • 广州网站运营优化大师怎么下载
  • 网站开发硬件设计做网站的知识