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

客户网站开发全流程南昌房产网

客户网站开发全流程,南昌房产网,免费咨询法律问题的网站,巴州网站建设库尔勒网站建设钟爱网络一、堆中两个重要的算法 我们前面学习了树的概念和结构,还要树的一种特殊树--二叉树,然后我们学习了堆,知道了堆分为大堆和小堆,接下来我们就使用堆来进行一个排序。 在学习我们的堆排序前,我们先详细学习一下我们堆…

一、堆中两个重要的算法

我们前面学习了树的概念和结构,还要树的一种特殊树--二叉树,然后我们学习了堆,知道了堆分为大堆和小堆,接下来我们就使用堆来进行一个排序。

在学习我们的堆排序前,我们先详细学习一下我们堆中两个重要的算法:

1、向上调整算法

我们前面在实现堆的插入功能的时候,有简单的讲过这个算法,其在插入操作中,我们所插入的元素是可能会破坏我们的堆的有序结构的,导致我们的二叉树不成堆,这个算法是用来保证我们的堆结构的。

其具体过程如下:

其代码如下:

2、向下调整法

这个算法我们在删除堆顶数据的时候使用的,我们在删除堆顶的元素的时候,对于谁来做这个堆顶是比较难弄的。我们最后就是将原来堆顶的元素和堆尾的元素进行交换,然后删除堆尾,然后我们对当前堆顶的元素进行向下调整。

算法的过程如下:

代码如下:

 

3、两个算法的时间复杂度

首先二叉树有个性质:

我们以一个满二叉树来举例:

向上调整算法:

第1层,2的0次方 个结点,需要向上移动0层,第二层2的一次方个结点,需要向上移动一层,以此类推第h层,有2的h-1个结点,需要向上移动h-1层。

那么我们总的要移动的次数为:

将其换成n:

 这个算法和输入的结点的个数的关系,这个就是我们的向上调整算法的时间复杂度。

向下调整算法:

第一层,一个结点,需要向下移动h-1次,第二层,2的一次方个结点,需要向下移动h-2次,依次类推,第h层,2的h-1次方个结点,需要向下移动0次,那么其时间复杂度如下:

将其换成n :

我们可以看到向下调整算法的时间复杂度要比向上调整算法的时间复杂度要低,那么这是为啥呢?

我们可以发现,我们的向下调整算法中,当结点少的时候,其要走的次数要多,,其结点多的时候,要调整的次数少,而反观向上调整算法中,当结点少的时候,其次数少,然后结点多起来的时候其要走的次数就多了,所以他的算法时间复杂度肯定要高过向下调整算法的。

所以我们在接下来的堆排序中使用的更多的是向下调整算法。

 

二、堆的应用

1、堆排序

根据给的一个数组,将其变成我们的有序的堆结构。

那么我们要如何进行操作,例如我们现在要将这个数组实现升序的结构,那么我们是建大堆还是小堆呢?如果是降序呢?我们又要建大堆还是小堆呢?

我们如果是要是实现升序,那么我们建一个大堆,然后将堆顶的元素变成数组的前面的元素,然后将堆顶的元素和堆尾的元素进行交换,然后将此时的堆尾的元素进行删除,然后再对这个堆向下调整,反复操作,知道将数组变成升序的。

其就是先将堆顶元素取到,然后再进行删除堆顶元素。

不过上述的方法就需要我们先将现在的数组变成堆的结构。那么我们就将数组的元素一个一个的入堆即可。

那么要是要实现降序,那么我们就建小堆,后续的操作还是一样的。

代码如下:

 2、TOK-K问题

TOK-K问题:即求数据集合中的前k个最大的元素,或者最小的元素,其在我们的生活中是非常常见的,比如说我们的福布斯富豪榜,五一小黄金周热门出现城市,流入人口最多的几个城市等等,这种问题一般情况下,数据量都会比较大,那么对于这种问题,没有任何限制的情况下,我们肯定最先想到的是排序,如果数据量非常非常非常大,那么排序方法就不可取了,那么我们要咋办呢?

比如说现在我们有4个G 的数据需要进行比较,但是我们只有1G的内存,所以是没办法将全部数据都存储起来的,那么我们要怎么办呢?

我们可以将这4G个数据,我们先取1G,然后我们使用我们的堆数据结构。如果我们是要取的是前K个最大的数据,那么我们就建小堆,然后我们再遍历剩下的3G的数据,然后将其与堆顶的元素进行比较,如果其比堆顶的元素大,那么我们就将堆顶的元素换掉,然后再使用向下调整法,如此反复。自此,完成后,这个堆中的K个元素就是这4G中的大的K个元素。

反之如果我们是要找前K个小的元素,那么我们就需要建大堆了,然后遍历剩下的数据,如果其比堆顶要小,那么就将堆顶换掉,然后使用向下调整法。

代码如下:

以上就是我们的堆的应用部分的内容了,谢谢大家的观看。 


文章转载自:

http://Vi8NDu30.ydgzj.cn
http://6rBXPBDX.ydgzj.cn
http://GFmF8BfO.ydgzj.cn
http://L2CGgFuU.ydgzj.cn
http://WlosZYY5.ydgzj.cn
http://YHeqZJfA.ydgzj.cn
http://5ey0kN6x.ydgzj.cn
http://qrUJskfN.ydgzj.cn
http://yvGGCFhL.ydgzj.cn
http://j6redydU.ydgzj.cn
http://Yg5Vlmll.ydgzj.cn
http://tuh0UO4A.ydgzj.cn
http://ru3r0hB7.ydgzj.cn
http://nZNERIIJ.ydgzj.cn
http://xnTnUQeM.ydgzj.cn
http://zUx5WQDj.ydgzj.cn
http://0vgMITbW.ydgzj.cn
http://vN8KXUMh.ydgzj.cn
http://IUXHE7rg.ydgzj.cn
http://dEKROQxf.ydgzj.cn
http://TziSgH6x.ydgzj.cn
http://ySGFZaS2.ydgzj.cn
http://NoBFynMW.ydgzj.cn
http://WbjAuG63.ydgzj.cn
http://OQsp0hXL.ydgzj.cn
http://p0r3uNQH.ydgzj.cn
http://3jhrHh1z.ydgzj.cn
http://vE8sKjbA.ydgzj.cn
http://7rIF8MjI.ydgzj.cn
http://4gXyjEFT.ydgzj.cn
http://www.dtcms.com/wzjs/637498.html

相关文章:

  • 宁波网站建设制作推广优化网站服务
  • 天津市建设安全协会网站网店运营推广1+x证书查询
  • 企业网站如何去做优化英语字体设计网站好
  • 展示型网站搭建wordpress搬家文章
  • WordPress下拉下一页企业营销型网站seo推广
  • 开公司先建设网站外国网站欣赏
  • linux 搭建网站服务器ai海报设计
  • 湖北网站建设制作网站备案成功后该怎么做
  • 网站字体大小选择wordpress博客重装
  • 开发网站的流程广州联享品牌网站建设
  • 宽城区网站建设wordpress文章标题字体
  • 怎样建网站视频教程手把手教建设网站
  • 家居网站建设定位分析论文wordpress永久链接设置的六大技巧
  • 建网站需要多少钱2017wordpress登陆界面背景
  • 地下城钓鱼网站怎么做织梦做旅游网站
  • 德邦物流公司现代物流网站建设与开发标书制作代做公司
  • 网站开发计什么科目wordpress客户使用的后端
  • 做网站时链接的网页无法显示搭建网站需要学什么软件
  • 网站被做301跳转了怎么办新版wordpress没有关键词
  • 一个人制作网站智慧团建网站登录平台pc端
  • 银川网站建设0951手机app下载网
  • 备案个人网站名称wap网站软件
  • 建立自己的网站步骤网站 平均加载时间
  • 设计logo网站免费国外如何在各大网站发布信息
  • 三五互联网站建设怎么样莱芜吧莱芜贴吧
  • 工商局网站做年报制作网站首先做的是
  • 网站推广软件工具设计房子装修效果图软件
  • 海口建设局网站h5网站建设代理
  • 农业网站源码带数据空间购买网站
  • 优秀网站建设模版交互设计专业学什么