堆排序
来源:互联网 发布:手机破解软件资源 编辑:程序博客网 时间:2024/06/08 04:27
#include<iostream>#include<cstdio>using namespace std;const int maxn=10001;int dui[maxn];int n,cnt=0;void push(int a){ cnt++; int now=cnt; dui[now]=a; while(now>1) { int fa=now/2; if(dui[now]<dui[fa]) { swap(dui[now],dui[fa]); now=fa; } else break; } return;}void pop(){ dui[1]=dui[cnt]; int now=1; while(now*2+1<=cnt)//**用while循环!!!!!!!!** { int l=now*2,r=now*2+1; if(dui[l]<dui[now]) { if(dui[r]<dui[now]&&dui[r]<dui[l]) swap(l,r); swap(dui[now],dui[l]); now=l;//**要注意这里不能加大括号!!!** } else if(dui[r]<dui[now]) { swap(dui[r],dui[now]); now=r; } } cnt--; return;}int top(){ if(cnt>=0) { return dui[1]; }}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&dui[i]); push(dui[i]); } for(int i=1;i<=n;i++) { cout<<top()<<'\n'; pop(); } return 0;}
阅读全文
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- linux下的EDA——VCS使用
- ICE的应用
- boolan面向对象编程 第一周笔记
- 剑指offer--复杂链表的复制
- spring学习笔记三
- 堆排序
- 测试垃圾回收次数
- 利用mybatis-generator自动生成代码
- 并查集
- 动态规划【模版】
- Java-对象未初始化打印属性、类对象
- caffe: window8+cuda7.5+cudnn7.5
- 对CommonJs和AMD,CMD的理解,AMD和CMD的区别,CommonJS与ES6的module的区别
- 创建maven项目但是 webcontent这个文件夹没有