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

狮山网站建设淘宝购物网

狮山网站建设,淘宝购物网,网站做app安全吗,个人自建网站1.堆的概念 如果有⼀个集合 K {k0&#xff0c;k1&#xff0c;k2&#xff0c;...&#xff0c;k(n-1)} &#xff0c;把它的所有元素按完全二叉树的形式存储在一个一维数组中&#xff0c;并满足&#xff1a;K(i)<2*i1且K(i)<2*i2&#xff08;K(i)>2*i1且K(i)>2*i2&a…

1.堆的概念

如果有⼀个集合 K = {k0,k1,k2,...,k(n-1)} ,把它的所有元素按完全二叉树的形式存储在一个一维数组中,并满足:K(i)<=2*i+1且K(i)<=2*i+2(K(i)>=2*i+1且K(i)>=2*i+2),i=0,1,2... ,则称为小堆(或大堆),将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆

例:有一组数据:10,65,70,30,15,25

                                

2.堆的实现

(1)初始化堆

(2)堆的销毁

(3)交换

(4)堆的插入

 (5)向上调整

为了构建小堆或大堆,在插入数据时,可以将插入的数据看作孩子,在满足双亲的下标>=0(孩子的下标大于0)将孩子与双亲作对比,向上调整数据

图例:

向上调整算法的时间复杂度:(为了简化使用满二叉树来证明)

则每层节点需要移动的次数为:每层结点的个数*向上移动的次数,节点总共需要移动的次数为:所有层节点需要移动的次数之和

T(h)=2^1*1+2^2*2+2^3*3+...+2^(h-2)*(h-2)+2^(h-1)*(h-1)                       ①

2*T(h)=2^2*1+2^3*2+2^4*3+...+2^(h-1)*(h-2)+2^(h)*(h-1)                       ②

①-②:-T(h)=2^1+2^2+2^3+...+2^(h-2)+2^(h-1)-2^h*(h-1)                                                                                    =2^h-2-2^h*(h-1)                                                                                                                                =2^h(2-h)-2

T(h)=2^h(h-2)+2,根据二叉树的性质:n=2^h-1,h=log2(n+1)

得F(n)=(n+1)(log2(n+1)-2)+2,故向上调整算法的时间复杂度为:O(n*log2(n))

(6)打印堆

(7)判空

 (8)堆的删除

删除堆顶数据就是将数组开头的元素和数组末尾的元素交换,将堆中size的值减一,此时堆中的结构可能被改变,不再是大堆(小堆),需要将堆顶元素向下调整

(9)向下调整

以此时的堆顶元素为双亲,在满足孩子的下标小于堆元素个数的情况下,与两个孩子作对比(如果没有右孩子,则只和左孩子做对比),不断向下调整数据

图例:

向下调整算法的时间复杂度:(为了简化使用满二叉树来证明)

则每层节点需要移动的次数为:每层结点的个数*向下移动的次数,节点总共需要移动的次数为:所有层节点需要移动的次数之和

T(h)=2^0*(h-1)+2^1*(h-2)+2^2*(h-3)+...+2^(h-3)*2+2^(h-2)*1                       ①

2*T(h)=2^1*(h-1)+2^2*(h-2)+2^3*(h-3)+...+2^(h-2)*2+2^(h-1)*1                    ②

②-①:T(h)=2^1+2^2+2^3+...+2^(h-2)+2^(h-1)+1-h                                                                                             =2^h-1-h

根据二叉树的性质:n=2^h-1,h=log2(n+1) 

T(n)=n-log2(n+1),故向下调整算法的时间复杂度为O(n)                        

(10)取堆顶元素

3.堆排序

(1)在数据结构堆中实现排序

创建数据结构堆,将数组中的元素一一插入堆中,在堆不为空的情况下,循环取堆顶放入数组中,再删除堆顶,每次取出的堆顶都是堆中的最大值或最小值,由此实现升序或降序排列

(2)利用堆的思想在数组中实现排序

通过向上调整或向下调整将数组排列成堆的结构(若要排升序,则建大堆,排降序,则建小堆),将数组开头的元素和末尾的元素交换,将此时数组开头的元素看作双亲,向下调整

堆排序算法的时间复杂度为:O(nlog2(n)),效率高于冒泡排序


文章转载自:

http://bCnre0XA.fnwtq.cn
http://d0K5emax.fnwtq.cn
http://1fzTYVpP.fnwtq.cn
http://Q4MOD0zz.fnwtq.cn
http://5AinqZQI.fnwtq.cn
http://nRmT6wDB.fnwtq.cn
http://qgmJQ3h1.fnwtq.cn
http://N7qF1duI.fnwtq.cn
http://CPV1PcMt.fnwtq.cn
http://i7U6pxsM.fnwtq.cn
http://zNFucjev.fnwtq.cn
http://fFIuXRKO.fnwtq.cn
http://lsDgzRZ8.fnwtq.cn
http://FKN1rYji.fnwtq.cn
http://JbfFx2MO.fnwtq.cn
http://uJqFP6LM.fnwtq.cn
http://E3jAGRHM.fnwtq.cn
http://ETjUBZBN.fnwtq.cn
http://pgtM1vyd.fnwtq.cn
http://B14ugJto.fnwtq.cn
http://xk2kBQuT.fnwtq.cn
http://OiRhTbEg.fnwtq.cn
http://qWdLveWv.fnwtq.cn
http://3JhxgPbW.fnwtq.cn
http://8F16SR0u.fnwtq.cn
http://tPl1eTqa.fnwtq.cn
http://RxbuUYym.fnwtq.cn
http://pKMpnb8o.fnwtq.cn
http://pkaYM5RU.fnwtq.cn
http://4yugNLNz.fnwtq.cn
http://www.dtcms.com/wzjs/664351.html

相关文章:

  • 南通市交通建设处网站如何建设好企业的网站维护
  • 网站布局方案网站建设和管理什么意思
  • 电子商务网站的建设网页小游戏有哪些
  • 官方网站是什么网站建设毕业设计 任务书
  • 网站开发 家具销售 文献高新营销型网站建设公司
  • 云南建设工程网站电商网站建设方面的毕业设计
  • 做梯子的企业网站东莞网站建设主要学什么
  • h5网站做微信小程序网络推广合作
  • 做的网站太大怎么办国内黑色风格的网站
  • 北京网站建设软件成都建站seo
  • 漂浮广告网站wordpress底面有虚线这么办
  • 网站备案icp佛山网站制作的公司
  • 网站源码建站视频深圳网站建设怎样快速
  • 做网站还有流量么网站建设选信达互联
  • 网站建设费用写创意衡阳房产网
  • 网站的建设目标有哪些哪里有专门做网站的
  • wap网站现在还有什么用seo优化sem
  • 建设完网站成功后需要注意什么江宁区住房与城乡建设局网站
  • 专做农产品的网站有哪些WordPress微博图片
  • 网站开发图书管理系统用python网站开发
  • logo设计竞标网站久久建筑网不能用积分兑换金币了
  • 临沂网站建设服务商为什么淘宝店主不自己做电商网站
  • 网站模板织梦免费河南网站推广公司
  • 网站开发排期表装修网站大全
  • 大气绿色网站模板网站免费优化软件
  • 网站域名301是什么意思wordpress自定义类型模板
  • 网站开发后端做那些最佳搜索引擎
  • 宁波企业建站程序自己想做一个网站怎么做
  • 网站的素材做logo企业管理软件有哪些
  • 酒泉网站建设培训德国购物网站排名