【codevs3110】一把鼻涕一把泪的堆排序
2015-09-28 19:54
357 查看
3110 二叉堆练习3
时间限制: 3 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
题解
查看运行结果
题目描述 Description
给定N(N≤500,000)和N个整数(较有序),将其排序后输出。
输入描述 Input Description
N和N个整数
输出描述 Output Description
N个整数(升序)
样例输入 Sample Input
5
12 11 10 8 9
样例输出 Sample Output
8 9 10 11 12
数据范围及提示 Data Size & Hint
对于33%的数据 N≤10000
对于另外33%的数据 N≤100,000 0≤每个数≤1000
对于100%的数据 N≤500,000 0≤每个数≤2*10^9
写在前面:哭晕(:з」∠)
————————————————————————————————————————————————————————
写在前面:不想说啥了,一个星期没碰电脑,手都生了,想不起程序段回去看原来写的,后来写了半天发现并不适用,尽情地叫我脑残好了!(这道题是可以用快排做的←—←)
时间限制: 3 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
题解
查看运行结果
题目描述 Description
给定N(N≤500,000)和N个整数(较有序),将其排序后输出。
输入描述 Input Description
N和N个整数
输出描述 Output Description
N个整数(升序)
样例输入 Sample Input
5
12 11 10 8 9
样例输出 Sample Output
8 9 10 11 12
数据范围及提示 Data Size & Hint
对于33%的数据 N≤10000
对于另外33%的数据 N≤100,000 0≤每个数≤1000
对于100%的数据 N≤500,000 0≤每个数≤2*10^9
写在前面:哭晕(:з」∠)
————————————————————————————————————————————————————————
写在前面:不想说啥了,一个星期没碰电脑,手都生了,想不起程序段回去看原来写的,后来写了半天发现并不适用,尽情地叫我脑残好了!(这道题是可以用快排做的←—←)
[code]#include<cstdio> #include<iostream> using namespace std; int heap[500001],n,len,x; void fix() { int l=len; while (l/2>=0) { int k=l/2; if (heap[l]>=heap[k]) break; else { swap(heap[l],heap[k]); l=k; } } } void get() { int l=1; while (l*2<=len) { int k=l*2; if (heap[k]>heap[k+1]&&k+1<=len) k++; if (heap[l]<=heap[k]) break; else { swap(heap[l],heap[k]); l=k; } } } main() { scanf("%d",&n); for (int i=1;i<=n;i++) { scanf("%d",&x); len++; heap[len]=x; fix(); } for (int i=1;i<=n;i++) { get(); printf("%d ",heap[1]); heap[1]=heap[len]; len--; } }
相关文章推荐
- java知识复习提纲(考试需要而写)
- leetcode刷题,总结,记录,备忘 198
- 基于struts2的登录系统
- mybatis代码生成的2种方式
- 0-8 Linux网络配置
- 矩阵乘法(摆花)
- Vmware安装CentOS
- 二叉树的非递归遍历
- SSH网上商城之用户注册
- HTTP协议详解
- DB2多行结果合并到一行排列输出(类似递归)
- MongoDB 3.0 用户创建
- MFC文件复制、删除
- 把一个数组中的0元素移动到数组最尾端,其他非0元素进行排序,最后输出
- 每一层一个列表广度遍历二叉树
- Android ImageView 图片设置为透明
- [redis] redis 如何删除匹配模式的多个key值
- 【JSOI 2008】【BZOJ 1017】魔兽地图DotR
- 随机数生成
- java自带线程池和队列详细讲解