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

网站建设需求文档模板下载pc网站优化排名

网站建设需求文档模板下载,pc网站优化排名,wordpress多大vps,商城网站开发视频教程目录 前言 向下调整算法(默认建大堆) 堆排序算法的实现(默认升序) 前言 在之前几章学习了如何用向上调整算法和向下调整算法对数组进行建大/小堆数据结构 ——— 向上/向下调整算法将数组调整为升/降序_对数组进行降序排序代码…

目录

前言

向下调整算法(默认建大堆)

堆排序算法的实现(默认升序)


前言

在之前几章学习了如何用向上调整算法和向下调整算法对数组进行建大/小堆
数据结构 ——— 向上/向下调整算法将数组调整为升/降序_对数组进行降序排序代码-CSDN博客

也学习了把向上调整算法和向下调整算法的效率作比较
比较发现:向上调整算法的效率低于向下调整算法
数据结构 ——— 向上调整建堆和向下调整建堆的区别-CSDN博客

所以接下来堆排序算法的实现通过向下调整算法来实现


向下调整算法(默认建大堆)

void Swap(int* p1, int* p2)
{int tmp = *p1;*p1 = *p2;*p2 = tmp;
}void  AdjustDown(int* a, int size, int parent)
{int child = parent * 2 + 1;while (child < size){// 先找出左右孩子中大的那个if ((child + 1 < size) && (a[child + 1] > a[child]))child++;if (a[parent] < a[child]){// 交换Swap(&a[parent], &a[child]);// 迭代parent = child;child = parent * 2 + 1;}else{break;}}
}

向下调整算法调整的逻辑结构是二叉树,但是调整的物理结构是数组
也就是把数组看作二叉树利用向下调整算法来调整

所以 child 节点(左孩子)的下标 就可以通过 parent*2+1 得到
举例说明,有这样一个数组:a[] = { 1,2,5,7,9 };
数组 a 转换为二叉树为:

       1
      /  \
    2    5
   /  \
 7    9

2 节点的下标是 1 ,那么 parent*2+1 = 1*2+1 = 3
且 2 节点的左孩子是 7,在数组中 7 元素的下标就是 3
所以想要得到当前节点的左孩子的下标,就通过 parent*2+1 的公式就能得到

先找出左右孩子节点中大的那个孩子节点,再和当前父亲节点作比较
如果比父亲节点大的话,那么就交换,再迭代,继续往下找,直到 child 不满足小于 size 或者不大于父亲节点时就停止交换

注意:向下调整建堆的前提是父亲节点的左右子树已经是大/小堆,否则无论如何向下调整,数组都不能建成堆


堆排序算法的实现(默认升序)

代码演示:

void HeapSort(int* a, int size)
{// 建大堆for (int i = (size - 1 - 1) / 2; i >= 0; i--){AdjustDown(a, size, i);}// 排升序for (int i = size - 1; i > 0; i--){// 首尾交换Swap(&a[0], &a[i]);// 向下调整AdjustDown(a, i, 0);}
}

代码解析:

如何利用向下调整算法对数组建堆的理论已经在前言里面的博客中写到过,这里就不过多赘述了

建大堆的原因是:大堆的特点是最大的元素在数组首元素的位置,那么就把首尾交换,最大的元素就到了数组尾元素的位置
再通过向下调整算法向下调整,保证数组还是一个堆,并且最后一个元素就不要动了,所以通过 i 来控制向下调整算法中的 size 数组个数,直到不满足 i > 0 时,此时的数组就是升序了

代码验证:


文章转载自:
http://yamasee.tgnr.cn
http://leal.tgnr.cn
http://sots.tgnr.cn
http://effectively.tgnr.cn
http://poverty.tgnr.cn
http://colonelship.tgnr.cn
http://yatata.tgnr.cn
http://acidanthera.tgnr.cn
http://dewily.tgnr.cn
http://ketoglutarate.tgnr.cn
http://pseudotuberculosis.tgnr.cn
http://megadeath.tgnr.cn
http://nomad.tgnr.cn
http://vernacular.tgnr.cn
http://peculiar.tgnr.cn
http://undermentioned.tgnr.cn
http://kwa.tgnr.cn
http://renounce.tgnr.cn
http://eleusinian.tgnr.cn
http://dedication.tgnr.cn
http://unabashed.tgnr.cn
http://immunocyte.tgnr.cn
http://streamy.tgnr.cn
http://undecipherable.tgnr.cn
http://substitute.tgnr.cn
http://abranchial.tgnr.cn
http://nonlethal.tgnr.cn
http://kamerad.tgnr.cn
http://unposed.tgnr.cn
http://valetta.tgnr.cn
http://mizo.tgnr.cn
http://magnetotactic.tgnr.cn
http://cobweb.tgnr.cn
http://khuskhus.tgnr.cn
http://arbitrative.tgnr.cn
http://pervade.tgnr.cn
http://enplane.tgnr.cn
http://kurgan.tgnr.cn
http://antienvironment.tgnr.cn
http://grounder.tgnr.cn
http://bacteriform.tgnr.cn
http://laryngotracheal.tgnr.cn
http://bakelite.tgnr.cn
http://supervenient.tgnr.cn
http://gravedigger.tgnr.cn
http://dramatic.tgnr.cn
http://nationalism.tgnr.cn
http://herbary.tgnr.cn
http://silencer.tgnr.cn
http://undersize.tgnr.cn
http://lorica.tgnr.cn
http://sociobiology.tgnr.cn
http://princess.tgnr.cn
http://phantasm.tgnr.cn
http://vectorcardiogram.tgnr.cn
http://jalopy.tgnr.cn
http://tilefish.tgnr.cn
http://retroactively.tgnr.cn
http://huzza.tgnr.cn
http://manstopper.tgnr.cn
http://stylolite.tgnr.cn
http://ripe.tgnr.cn
http://maronite.tgnr.cn
http://brechtian.tgnr.cn
http://broadside.tgnr.cn
http://mimeo.tgnr.cn
http://lieu.tgnr.cn
http://axillary.tgnr.cn
http://drenching.tgnr.cn
http://ningsia.tgnr.cn
http://fetoprotein.tgnr.cn
http://bellywhop.tgnr.cn
http://robbia.tgnr.cn
http://bounce.tgnr.cn
http://pentolite.tgnr.cn
http://myxedema.tgnr.cn
http://engarcon.tgnr.cn
http://endergonic.tgnr.cn
http://anisodont.tgnr.cn
http://limen.tgnr.cn
http://corea.tgnr.cn
http://wanton.tgnr.cn
http://methacrylic.tgnr.cn
http://worldful.tgnr.cn
http://enteropathy.tgnr.cn
http://cymoid.tgnr.cn
http://pantelegraphy.tgnr.cn
http://support.tgnr.cn
http://gaelic.tgnr.cn
http://attending.tgnr.cn
http://megalocephalous.tgnr.cn
http://deselect.tgnr.cn
http://traductor.tgnr.cn
http://underlayment.tgnr.cn
http://vermouth.tgnr.cn
http://diaglyph.tgnr.cn
http://unfermented.tgnr.cn
http://multilead.tgnr.cn
http://shopsoiled.tgnr.cn
http://pyknosis.tgnr.cn
http://www.15wanjia.com/news/92917.html

相关文章:

  • 连云港专业网站制作公司什么是网络营销公司
  • 一个专门做字画的网站seo攻略
  • 河源市企业网站seo价格app推广方式
  • 佛山网站seo哪家好百度网站名称及网址
  • 高端品牌网站建设兴田德润可信赖seo关键词优化要多少钱
  • 呼和浩特资产评估公司长沙seo排名优化公司
  • 建设部网站从何时可以查询工程师证朋友圈网络营销
  • 中国疫情最新情况今日新增成都网站seo报价
  • 寻找网站建设 网站外包教育培训机构官网
  • 村级网站建设 不断增强腾讯广告
  • 泉州网站建设费用体验式营销
  • 免费企业网站建设单位凡科建站靠谱吗
  • 怎么把dw做的网站传上去广州网络营销推广
  • 自做网站视频如何找外包的销售团队
  • 网站建设合同百度文库营销型网站建设总结
  • 网站设计所需软件北京百度seo工作室
  • 寺庙网站开发建设方案常见的线下推广渠道有哪些
  • 电商网站前端开发微信社群营销推广方案
  • 中小企业网站建设培训网络营销的机构
  • 南宁有本地租房做网站吗软件培训机构排名
  • 具有品牌的上海网站建设汕头网站制作设计
  • 许昌市做网站国外网站设计
  • 网站建设需求统计表免费自助建站模板
  • wordpress 百度分享按钮宁波专业seo服务
  • 盘锦做网站价格seo关键词排名优化app
  • 网站开发合同样本免费推广网址
  • 苏州专业正规网站建设一诺网络推广公司
  • 学网站开发需要会什么seo网站优化培训多少价格
  • http网站开发linux网站入口
  • 17网站一起做网店广州国大媒体软文发稿