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

陕西手机网站建设公司哪家好拍卖网站模板

陕西手机网站建设公司哪家好,拍卖网站模板,知名网站排行榜,网站运营流程一、堆排序的思想 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是通过堆(若不清楚什么是堆,可以看我前面的文章,有详细阐述)来进行选择数据&am…

一、堆排序的思想

         堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是通过堆(若不清楚什么是堆,可以看我前面的文章,有详细阐述)来进行选择数据,通过向下调整算法,从第一个非叶子结点开始在局部先创建出大堆(或小堆),然后父亲结点不断往上走,直到整棵树都建成一个堆 需要注意的是排升序要建大堆,排降序建小堆。( 然后不断交换根节点和最后一个节点的值,交换完后节点的数目减1(因为最后一个节点已经是它应该在的位置了,不用再参与建堆),再从根节点向下建堆(除最后一个节点其它节点又会建成一个堆) 然后重复红色括号中的过程,堆排序就完成了。

二、堆排序的图解

下图以建大堆为例排一个升序序列

三、堆排序的实现

3.1向下调整算法的实现

实现堆排序最重要的就是实现向下调整算法。以下是向下调整算法的代码以及解释

//这里以建大堆为例
void AdjustDown(int* a, int n, int root)
{int child = root * 2 + 1;//找到根节点的左孩子while (child < n)//判断左孩子是否出界{if (child + 1 < n && a[child + 1] > a[child])//child + 1 < n判断右孩子是否出界,//a[child + 1] > a[child]判断左右孩子的大小,取左右孩子中大的那一个child++;if (a[child] > a[root])//入过孩子的值比父亲的值大,就交换孩子和父亲的位置Swap(&a[child], &a[root]);else//如果孩子的值不比父亲的值大,就证明大堆已经建好了(因为此时父亲的左右子树都是大堆),//直接break跳出循环。break;//没有break来到这里就顺着子树继续往下走root = child;child = root * 2 + 1;}
}

3.2堆排序的实现

以下是堆排序的代码实现以及解释

void HeapSort(int* a, int n)
{//向下调整建堆for (int i = (n - 1 - 1) / 2; i >= 0; i--){//(n - 1 - 1) / 2找到第一个非叶子节点,从第一个非叶子结点开始向下建堆AdjustDown(a, n, i);}//堆建好了int end = n - 1;while (end > 0){//假设是建大堆,将下标为0的元素和下标为end的元素交换,//最大的数就排到最后了,也就相当于最后的那个数已经排好了,不用再参与下面的向下建堆Swap(&a[0], &a[end]);AdjustDown(a, end, 0);//还没有排好的数向下建堆从0位置开始向下建堆end--;}
}

四、总结

堆排序的时间复杂度为 O(N*logN) (向下建堆时间复杂度为O(N),排序时间复杂度为O(N*logN)), 空间复杂度:O(1) ,稳定性:不稳定。
http://www.yayakq.cn/news/277385/

相关文章:

  • 做网站图片知识贵州省建设厅的网站首页
  • 深圳做网站排名公司推荐wordpress一键安装
  • 河南省住房和城乡建设厅新网站怎么用flash做视频网站
  • 网站注册收入高密做网站哪家好价位
  • 万维网网站备案流程做网站 图片显示不出来
  • 个人网站如何做淘宝客荣成市有做网站的吗
  • 创建销售网站多少钱大连项目备案网站
  • 有哪些专门做减肥内容的网站永久免费微信小程序商城
  • 实战网站开发安卓应用市场app下载安装
  • 2008 iis 添加 网站 权限设置权限财经新闻最新消息
  • 临沂建设规划局网站网站制作哪家做的好
  • 内蒙能源建设集团网站网站跟网页的区别是什么
  • 重庆网站推广公司织梦好还是wordpress
  • 九江开发区建设环保局网站建筑模板一般多少钱一块
  • 杭州网站建设排名受欢迎的网站建设案例
  • app在线生成平台 免费沧州网站改版优化
  • 龙岩市城乡规划建设局网站镇江市官网
  • 企业网站的新闻资讯版块有哪些小白node怎么做网站
  • asp.net 做网站好吗wordpress文章网格
  • 中山学校的网站建设wordpress主页面编辑器
  • 上海华东建设发展设计有限公司网站一套网站开发需要多少钱
  • 重庆网站设计制作价格网站平台策划方案
  • 济南营销型网站建设团队马克斯网站建设
  • 个人网站建设的收获合同解除协议
  • 建设管理网站首页网站开发所需要的技术
  • 新乡网站建设制作张槎网站开发
  • 做网站需要学什么语言金蝶二次开发
  • 宁波网站制作流程wordpress怎样修改字体
  • 做网站 橙色怎么搭配做编程的 网站有哪些方面
  • wap网站开发协议公司的网站设计方案