建小顶堆以及推排序
来源:互联网 发布:智能交通 数据挖掘 编辑:程序博客网 时间:2024/06/11 14:05
/* 建立的是一个小顶堆*/# include<cstdio># include<iostream># include<algorithm># include<cstring># include<string># include<cmath># include<queue># include<stack># include<set># include<map>using namespace std;# define inf 999999999int h[101];//用来存放堆的数组int n;//堆的大小void _swap ( int x,int y ){ int t; t = h[x]; h[x] = h[y]; h[y] = t;}void siftdown( int i ){ int t; int flag = 0;//用flag来记录是否需要继续往下调整 while ( i * 2 <= n && flag == 0 ) { if ( h[i] > h[i*2] ) { t = 2*i; } else { t = i; } if ( 2*i+1 <= n ) { if ( h[t] > h[2*i+1] ) { t = 2*i+1; } } if ( i!=t ) { _swap( t,i ); i = t; } else flag = 1; }}void creat(){//从最后一个非叶节点开始,逐步向上调整 for ( int i = n/2;i >= 1;i-- ) { siftdown(i); }}int deletemax(){ int t; t = h[1]; h[1] = h[n]; n--; siftdown(1); return t;}int main(void){ int num; cin>>num; for ( int i = 1;i <= num;i++ ) { cin>>h[i]; } n = num; creat(); for ( int i = 1;i <= num;i++ ) { cout<<deletemax()<<endl; }return 0;}
0 0
- 建小顶堆以及推排序
- 算法中推排序的思想以及程序表示
- 推排序
- 推排序
- 排序算法:推排序
- 推排序举例
- 推排序算法C/C++
- 堆排序及推排序实现[原创]
- 直接插入排序、归并排序、推排序、快速排序
- HDU1028关于母函数以及递推
- 神、上帝以及老天爷 hdu2048 递推
- HDU2048 神、上帝以及老天爷【递推】
- ural 1306 (heap推排序)
- 数据结构之“堆”及推排序
- [BZOJ 4562] 食物链 拓扑排序+递推
- Lucene排序以及自定义排序
- Lucene排序以及自定义排序
- 选择排序以及冒泡排序
- 解决警告“ld: warning: directory not found for option”
- Milano Store OpenCart 2.0 主题模板 ABC-0473
- 【Java并发编程】之十八:第五篇中volatile意外问题的正确分析解答(含代码)
- HDU 5179
- iOS 用C语言实现画矩形
- 建小顶堆以及推排序
- PHP 常用功能
- 【转】文件下载中文显示 content-disposition 正确设置
- poj 2762 强连通分量+拓扑排序(判断图是否为单向连通)
- 2012年10月9号阿里巴巴笔试(c++)
- 深入web请求
- 幂等
- Spring4 + Junit4 实现测试中ApplicationContext的获取
- poj 1298 he Hardest Problem Ever