jzoj1478-堆排序【堆】
题目
一些数,用堆把它们从小到大排好
解题思路
每个堆的开头是最大(小)的。每次把开头读取出来,然后把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-堆排序【堆】相关推荐
- 看懂堆排序——堆与堆排序(三)
看懂堆排序--堆与堆排序(三) 看懂堆排序--堆与堆排序(三) 堆排序的基本思想 代码详解 父亲下标和孩子下标的关系 打印数组的函数 下滤函数 构造堆的函数 删除最大元函数 排序主函数 完整代码及运行 ...
- 大小堆堆排序堆的应用
一.首先说一下堆的概念吧这里就不按照标准的概念来说了,就说说我理解的堆. 堆就是一个数组中的元素,参考着完全二叉树的这种数据结构存储在数组中,这样就是一个堆.注意:这里是参考,实际的存储还是在数组中, ...
- 堆排序时间复杂度_图解堆结构、堆排序及堆的应用
前言 这次我们介绍另一种时间复杂度为 O(nlogn) 的选择类排序方法叫做堆排序. 我将从以下几个方面介绍: 堆的结构 堆排序 优化的堆排序 原地堆排序 堆的应用 堆的结构 什么是堆?我给出了百度的 ...
- 大顶堆小顶堆java_《排序算法》——堆排序(大顶堆,小顶堆,Java)
十大算法之堆排序:堆的定义例如以下: n个元素的序列{k0,k1,...,ki,-,k(n-1)}当且仅当满足下关系时,称之为堆. " ki<=k2i,ki<=k2i+1;或ki ...
- C语言基本数据结构之五(折半插入,堆排序,冒泡排序,快速排序,并归排序)
上一篇大概写了序列的查找算法,这次就聊聊序列的几种重要的排序(大神自动飘过~~~) 一.算法分析 1.1 直接插入排序 基本思想:将文件中的记录分为有序区.无序区,不断地从无序区中顺序提取记录,按关键 ...
- python遍历数组冒泡排序_经典排序算法(冒泡排序,选择排序,插入排序,快速排序,堆排序)python实现...
最近在复习经典排序算法,自己用python也实现了一下,这里不会涉及到原理(因为网上方法已经很详细啦),就把函数贴上来,可以让大家自己试着运行下,再结合别处的原理也可以更好地理解它们的实现. 如果有错 ...
- 数据结构之堆Heap
1. 概述 堆(也叫优先队列),是一棵完全二叉树,它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆).它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等. 2. 堆 ...
- 快排堆排归排三种排序的比较
目录 快排 堆排序 归并排序 三种排序的比较 快排 快速排序中最简单的(递归调用) 注:倒序,和 列表中有大量重复元素时,时间复杂度很大 快排例子 注:快排代码实现(类似于二叉树 递归调用) 时间复杂 ...
- 拜托,别再问我什么是堆了!
前言 堆是生产中非常重要也很实用的一种数据结构,也是面试中比如求 Top K 等问题的非常热门的考点,本文旨在全面介绍堆的基本操作与其在生产中的主要应用,相信大家看了肯定收获满满! 本文将会从以下几个 ...
- 算法练习day5——190322(快排、建堆、调整堆)
1.快速排序 1.1 非经典: 每次选取数组的最后一个元素为基准,进行排序: 将大于基准的排后边,小于基准的排前面,等于基准的在中间(类似于荷兰国旗问题): 直至进行排序的左边界=右边界. packa ...
最新文章
- 数字信号处理中卷积的计算
- 7000 界面语言不升级_仅限今日!手把手教你C++图形界面开发|附完整代码,海量干货!...
- virtualbox调试linux内核,virtualbox+kgdbt调试linux内核
- html表单没有csrf保护,如何在Symfony 1.4中为表单禁用CSRF保护/验证
- 使用Idea创建SpringCloud父子工程
- [Swift]loadNibNamed方法
- ​北京大学 2022 年博士研究生招生简章
- 【JZOJ4788】【NOIP2016提高A组模拟9.17】序列
- CFA2019notes的PDF版本,热乎乎的百度网盘分享
- 用PS设计曲线四分环
- 如何免费获取国外硕博学位论文全文资源
- 个人认为比较有意思的文章
- idea 懒人神器 保存自动格式化 Save Action插件
- java学习笔记(10) 第10 章(上) - 面向对象编程(高级部分)
- python人工智能入门书籍推荐-有哪些关于人工智能的书籍可供推荐?
- 《测量心理学》技能部分考题分析
- Python的静态成员变量和非静态成员变量
- 需求分析阶段的各个步骤
- Java面试_代理模式
- dnf 服务器喇叭怎么制作,一个服务器喇叭的独白 - DNF玩家交流 - 地下城与勇士 - DNF-游久网(UUU9)DNF资料站...