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

有名的网站建设wordpress博客站模板下载

有名的网站建设,wordpress博客站模板下载,郑州网络推广方法,格力网站建设需求分析目录 1 堆的应用1.1 堆排序1.1.1 思路1.1.2 代码实现 1.2 建堆的时间复杂度1.2.1 向下调整1.2.1 向上调整1.2.3 结论 学习堆的应用之前,欢迎学习下堆。 这是博主之前的文章,欢迎学习交流 初阶数据结构(C语言实现)——5.2 二叉树的…

目录

  • 1 堆的应用
    • 1.1 堆排序
      • 1.1.1 思路
      • 1.1.2 代码实现
    • 1.2 建堆的时间复杂度
      • 1.2.1 向下调整
      • 1.2.1 向上调整
      • 1.2.3 结论

学习堆的应用之前,欢迎学习下堆。
这是博主之前的文章,欢迎学习交流

初阶数据结构(C语言实现)——5.2 二叉树的顺序结构及堆的实现
初阶数据结构(C语言实现)——5.1二叉树基础概念

1 堆的应用

1.1 堆排序

1.1.1 思路

堆排序即利用堆的思想来进行排序,总共分为两个步骤:

  1. 建堆
    升序:建大堆
    降序:建小堆
  2. 利用堆删除思想来进行排序
    建堆和堆删除中都用到了向下调整,因此掌握了向下调整,就可以完成堆排序。
    在这里插入图片描述

在这里插入图片描述

1.1.2 代码实现

void swap(HPDataType* p1, HPDataType* p2)
{HPDataType x = *p1;*p1 = *p2;*p2 = x;
}void AdjustUp(HPDataType* a, int child)
{int parent = (child - 1) / 2;//根据孩子位置,计算父亲位置while (child > 0)//child = 0,说明parent不存在了,已经到堆顶了{if (a[child] > a[parent]) //当孩子大小大于父亲大小的时候就交换{swap(&a[child], &a[parent]);//因为其他地方也要用到交换,封装了一个交换函数child = parent; //现在把父亲的值给孩子。parent = (child - 1) / 2;//继续计算现在节点的父亲结点,}else//孩子<=父亲 没必要往上走,直接break就行。		{break;}}
}
void AdjustDown(HPDataType* a, int n ,int parent)
{int child = parent*2+1;//根据父亲位置,计算孩子位置while (child <n)//走到没有孩子的时候,结束,{// 选出左右孩子中大的那一个if (child + 1 < n && a[child + 1] > a[child])//必须把child+1<n放前面,否则后面a[child+1]就越界了!{++child;}//交换if (a[child] > a[parent]){swap(&a[child],&a[parent]);parent = child;child = parent * 2 + 1;}else{break;}}
}
// 排升序 -- 建大堆void Heapsort(int* a, int n)//参数:数组和数据个数
{//建堆,方法1:向上调整堆 //模拟的是插入数据的过程for (int i = 1; i < n; ++i){AdjustUp(a, i);}//建堆,方法2:向下调整堆for (int i = 1; i < n; ++i){AdjustDown(a, n , i);}int end = n - 1;while (end > 0){swap(&a[end], &a [0]);AdjustDown(a, end, 0);--end;}
}

1.2 建堆的时间复杂度

1.2.1 向下调整

因为堆是完全二叉树,而满二叉树也是完全二叉树,此处为了简化使用满二叉树来证明(时间复杂度本来看的就是近似值,多几个节点不影响最终结果):

在这里插入图片描述

因此:向下建堆的时间复杂度为O(N)。

1.2.1 向上调整

在这里插入图片描述

因此向上建堆的时间复杂度是N*logn

1.2.3 结论

向下调整时间复杂度更小,更优,所以建堆使用的是向下调整

http://www.dtcms.com/a/470391.html

相关文章:

  • 网站打不开如何解决深圳企业网站建设服务中心
  • 专业的论坛网站建设开发wordpress静态化
  • hive的一些优化配置
  • 做网站一屏一屏的盖州网站建设
  • 佳木斯建设工程交易中心网站在龙港网站哪里做
  • 工具收集 - ContextMenuManager 右键管理
  • 【软件设计师中级】计算机组成与结构(六):系统性能评测与可靠性基础 - 衡量计算机的“尺子“与“保险“
  • 当游戏NPC有了“灵魂”,网易伏羲解码游戏智能交互场景新实践
  • 热更新:移动应用的“空中加油”技术-详解什么是热更新?-优雅草卓伊凡卓伊凡的挑战
  • 【GD32】软、硬件I2C对比
  • YMODEM 协议介绍以及通信流程分析和Lua语言实现
  • 视频直播点播平台EasyDSS如何助力餐饮行业实现“明厨亮灶”直播?
  • 通过网站做外贸广告公司有哪些
  • 关于网站建设的好处seo搜索优化邵阳
  • 百家号淄博圻谷网站建设做网站页面一般用什么软件
  • CCF-GESP 等级考试 2024年3月认证C++三级真题解析
  • 本地部署 DeepSeek 私有助手:从零到上线的完整方案
  • CTF攻防世界WEB精选基础入门:weak_auth
  • 石家庄网站建设蓝点公路建设网站
  • 免费制作网页的网站企业app定制开发公司
  • 若依框架Springboot开发开放接口供他人调用
  • 在Centos上安装Python指定版本
  • 体育赛事 APP 开发:从技术到体验的全方位突破
  • 【阿里云】记一次oss攻击
  • MySQL高效备份实战指南
  • OpenBLT移植教程
  • 怎样做站长建网站荥阳市建设局网站
  • 虚拟仿真实训:打破时空界限,重塑未来技能,引领教育新变革
  • MySQL字符集配置全攻略:告别乱码
  • 「机器学习笔记10」贝叶斯学习——从逆向思维到简化现实的强大武器