题目

一些数,用堆把它们从小到大排好

解题思路

每个堆的开头是最大(小)的。每次把开头读取出来,然后把a[num]提取上来,然后num减1在把新的a[1]降到合适的位置。

代码

#include<cstdio>
using namespace std;
int a[200001],num,x,n;
long long s,u;
void up(int x)//调整位置之1
{int t;while (x>1 && a[x]<a[x/2]){t=a[x];a[x]=a[x/2];a[x/2]=t;x/=2;}
}
void down(int x)//调整位置之2
{int t,y;while (x*2<=num && a[x]>a[x*2] || x*2+1<=num && a[x]>a[x*2+1]){y=x*2;if (x*2+1<=num && a[x*2]>a[x*2+1]) y++;t=a[x];a[x]=a[y];a[y]=t;x=y;}
}
void insert(int x)//插入
{a[++num]=x;up(num);}
int main()
{scanf("%d",&n); for (int i=1;i<=n;i++){scanf("%d",&x);insert(x);}//建堆for (int i=1;i<=n;i++){printf("%d\n",a[1]);a[1]=a[num];num--;down(1);//排序}
}

jzoj1478-堆排序【堆】相关推荐

  1. 看懂堆排序——堆与堆排序(三)

    看懂堆排序--堆与堆排序(三) 看懂堆排序--堆与堆排序(三) 堆排序的基本思想 代码详解 父亲下标和孩子下标的关系 打印数组的函数 下滤函数 构造堆的函数 删除最大元函数 排序主函数 完整代码及运行 ...

  2. 大小堆堆排序堆的应用

    一.首先说一下堆的概念吧这里就不按照标准的概念来说了,就说说我理解的堆. 堆就是一个数组中的元素,参考着完全二叉树的这种数据结构存储在数组中,这样就是一个堆.注意:这里是参考,实际的存储还是在数组中, ...

  3. 堆排序时间复杂度_图解堆结构、堆排序及堆的应用

    前言 这次我们介绍另一种时间复杂度为 O(nlogn) 的选择类排序方法叫做堆排序. 我将从以下几个方面介绍: 堆的结构 堆排序 优化的堆排序 原地堆排序 堆的应用 堆的结构 什么是堆?我给出了百度的 ...

  4. 大顶堆小顶堆java_《排序算法》——堆排序(大顶堆,小顶堆,Java)

    十大算法之堆排序:堆的定义例如以下: n个元素的序列{k0,k1,...,ki,-,k(n-1)}当且仅当满足下关系时,称之为堆. " ki<=k2i,ki<=k2i+1;或ki ...

  5. C语言基本数据结构之五(折半插入,堆排序,冒泡排序,快速排序,并归排序)

    上一篇大概写了序列的查找算法,这次就聊聊序列的几种重要的排序(大神自动飘过~~~) 一.算法分析 1.1 直接插入排序 基本思想:将文件中的记录分为有序区.无序区,不断地从无序区中顺序提取记录,按关键 ...

  6. python遍历数组冒泡排序_经典排序算法(冒泡排序,选择排序,插入排序,快速排序,堆排序)python实现...

    最近在复习经典排序算法,自己用python也实现了一下,这里不会涉及到原理(因为网上方法已经很详细啦),就把函数贴上来,可以让大家自己试着运行下,再结合别处的原理也可以更好地理解它们的实现. 如果有错 ...

  7. 数据结构之堆Heap

    1. 概述 堆(也叫优先队列),是一棵完全二叉树,它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆).它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等. 2. 堆 ...

  8. 快排堆排归排三种排序的比较

    目录 快排 堆排序 归并排序 三种排序的比较 快排 快速排序中最简单的(递归调用) 注:倒序,和 列表中有大量重复元素时,时间复杂度很大 快排例子 注:快排代码实现(类似于二叉树 递归调用) 时间复杂 ...

  9. 拜托,别再问我什么是堆了!

    前言 堆是生产中非常重要也很实用的一种数据结构,也是面试中比如求 Top K 等问题的非常热门的考点,本文旨在全面介绍堆的基本操作与其在生产中的主要应用,相信大家看了肯定收获满满! 本文将会从以下几个 ...

  10. 算法练习day5——190322(快排、建堆、调整堆)

    1.快速排序 1.1 非经典: 每次选取数组的最后一个元素为基准,进行排序: 将大于基准的排后边,小于基准的排前面,等于基准的在中间(类似于荷兰国旗问题): 直至进行排序的左边界=右边界. packa ...

最新文章

  1. 数字信号处理中卷积的计算
  2. 7000 界面语言不升级_仅限今日!手把手教你C++图形界面开发|附完整代码,海量干货!...
  3. virtualbox调试linux内核,virtualbox+kgdbt调试linux内核
  4. html表单没有csrf保护,如何在Symfony 1.4中为表单禁用CSRF保护/验证
  5. 使用Idea创建SpringCloud父子工程
  6. [Swift]loadNibNamed方法
  7. ​北京大学 2022 年博士研究生招生简章
  8. 【JZOJ4788】【NOIP2016提高A组模拟9.17】序列
  9. CFA2019notes的PDF版本,热乎乎的百度网盘分享
  10. 用PS设计曲线四分环
  11. 如何免费获取国外硕博学位论文全文资源
  12. 个人认为比较有意思的文章
  13. idea 懒人神器 保存自动格式化 Save Action插件
  14. java学习笔记(10) 第10 章(上) - 面向对象编程(高级部分)
  15. python人工智能入门书籍推荐-有哪些关于人工智能的书籍可供推荐?
  16. 《测量心理学》技能部分考题分析
  17. Python的静态成员变量和非静态成员变量
  18. 需求分析阶段的各个步骤
  19. Java面试_代理模式
  20. dnf 服务器喇叭怎么制作,一个服务器喇叭的独白 - DNF玩家交流 - 地下城与勇士 - DNF-游久网(UUU9)DNF资料站...

热门文章

  1. bootstrap grid php,bootstrap grid用法
  2. java树算法_Java数据结构算法(三)树
  3. 算法题目——生成括号匹配
  4. jdbc的预处理中如何处理模糊查询
  5. matlab常用函数辨析
  6. [RabbitMQ]工作队列原理_代码实现
  7. LeetCode 783二叉搜索树节点最小距离-简单
  8. C++手写a除以b的正余数
  9. matlab极大无关组,matlab最大无关组
  10. Oracle多租户体系,Oracle12C 多租户管理