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

做暧暧xoxo网站湛江cms建站

做暧暧xoxo网站,湛江cms建站,网上引流推广有哪些软件,网站开发软件开发培训【八大经典排序算法】堆排序 一、概述二、思路解读三、代码实现(大堆为例) 一、概述 堆排序是J.W.J. Williams于1964年提出的。他提出了一种利用堆的数据结构进行排序的算法,并将其称为堆排序。堆排序是基于选择排序的一种改进,通…

【八大经典排序算法】堆排序

  • 一、概述
  • 二、思路解读
  • 三、代码实现(大堆为例)


一、概述

堆排序是J.W.J. Williams于1964年提出的。他提出了一种利用堆的数据结构进行排序的算法,并将其称为堆排序。堆排序是基于选择排序的一种改进,通过维护一个堆来选择最大(或最小)的元素,并将其放置在数组的末尾,然后对剩余的元素进行递归调用堆排序。

堆排序在其初期的版本中存在一些性能问题,例如在构建堆的过程中需要频繁的调整堆的结构,导致性能的下降。为了改进这个问题,人们提出了一种称为“堆调整”的操作,将调整堆的过程优化为一次遍历,从而提高了性能。此外,还有一些其他的改进方法,如使用二叉堆来代替普通堆,使用自底向上的构建堆的方法等。

堆排序作为一种经典的排序算法,经过多年的发展与改进,已经成为一种高效稳定的排序算法,并在实际应用中得到广泛的应用。


二、思路解读

我们知道堆排序是一种基于堆数据结构的排序算法,所以堆排序分为以下几步:

①:构建大堆(或小堆)这里我们从数组的最后一个数据的父节点开始,采用向下调整算法来建堆。
向下调整算法有一个前提:左右子树必须是一个堆,才能调整。同时还要注意是调大堆还是小堆。
调小(大)堆:堆顶元素和孩子中最小(大)的节点比较,如果父节点大于(小于)较小的子节点子,两者交换。不断向下调整到合适位置。(调大堆,和较大孩子比较)
在这里插入图片描述

②:将堆中最大(或最小)的元素即堆顶元素与数组中最后一个元素交换位置,然后将堆的大小减1。将交换后的堆顶元素进行向下调整,直到堆再次满足堆性质。
在这里插入图片描述

③: 重复上述步骤,直到堆的大小为1,此时整个数组就有序了


三、代码实现(大堆为例)

void AdjustDown(int* a, int n, int parent)
{//建大堆int child = parent * 2 + 1;while (child < n){if (child + 1 < n && a[child + 1] > a[child]){child++;}if (a[parent] < a[child]){Swap(&a[parent], &a[child]);parent = child;child = parent * 2 + 1;}else{break;}}
}//堆排序
void HeapSort(int* a, int n)
{//升序,建大堆for (int i = (n - 2) / 2; i >= 0; i--){AdjustDown(a, n, i);}int end = n - 1;while (end > 0){Swap(&a[0], &a[end]);AdjustDown(a, end, 0);end--;}
}

时间复杂度:O(N*logN)
空间复杂度:O(1)

在这里插入图片描述
在这里插入图片描述

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

相关文章:

  • 西安网站开发定制制作找回原来的百度
  • 内部优惠券网站怎么做成都彩票网站开发
  • 一个虚拟主机空间挂两个网站找客网怎么样
  • 如何自己做代理网站的想法成都宏福樘设计公司
  • 购物商城网站搭建怎样进入12345的公众号
  • 合肥建站软件ui设计的作用
  • 主营网站建设会计记账暴走漫画网站建设中模板
  • 北京网站推广价格什么网站能买建设摩托车
  • 外贸局合并到哪个局网站网站怎么优化关键词排名
  • 网站绑定别名好吗教育集团网站建设的目的
  • 有什么值得做的网站北京口碑最好的教育机构
  • 百度推广建设网站是不是合发网站建设管理需要招聘什么人才
  • 程序员自己做网站怎么能来钱郑州互联网公司排行榜
  • 电子书籍网站开发社交软件开发费用
  • 昆山做网站的kamese顺义区网站建设
  • 甘肃省和城乡建设厅网站宁波建设集团股份有限公司官网
  • 广西 南宁 微信微网站开发东莞市交易中心网
  • 怎么建立一个网站的快捷方式中文网站模板免费下载
  • 网站建设方案书下载全渠道分销零售平台
  • 科普网站建设经验山西并州建设有限公司
  • 旅游电网站建设目标二手商城网站建设论文
  • 网站开发报价单 excelwordpress固定连接出错
  • 英文网站域名注册网站服务器大小
  • dw学校网站制作教程大气宽屏的网站
  • 站长统计ios公司网站开发的工作内容
  • 企业网站设计说明做微信推送网站
  • 做公司月刊网站wordpress看图插件
  • 哪个网站专业做商铺抖音里做我女朋友网站
  • 网站建设与运营 就业天眼查 企业查询
  • 专做律所网站大良网站建设基本流程