堆排序
来源:互联网 发布:蓝牙音频发射器 知乎 编辑:程序博客网 时间:2024/06/03 22:53
<pre name="code" class="cpp"><pre name="code" class="cpp">/**堆排序*//**顺序表存储*/#include<cstdio>#include<algorithm>#define LT(a,b) ((a)<(b))using namespace std;int a[]={9,5,2,1,3,4,6,8,9,10};int n=5;void f(int s,int m){ /**使a[s...m]成为一个大顶堆*/ int c = a[s]; for(int j=2*s; j<=m; j*=2){ /**沿key较大的孩子节点向下筛选*/ if(j < m && LT(a[j],a[j+1])) ++j; /**j为key较大记录的下标*/ if(!LT(c,a[j])) break; /**rc应插入在位置s上*/ a[s]=a[j]; s=j; } a[s]=c;}void Hs(){ /**把a[1...n]建成大顶堆*/ for(int i=n/2; i>0; --i) f(i,n); for(int i=n;i>1;--i){ swap(a[1],a[i]); /**把堆顶最大的和最后一个交换*/ f(1,i-1); /**将a[1,i-1]重新调整为大顶堆*/ }}int main(){ Hs(); for(int i=1;i<=5;i++) printf("%d ",a[i]); return 0;}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile
- HTTP无状态协议分析与Cookie的关系
- Cookie与Session的简单讨论
- 第5讲 zend原理深度剖析
- Cookie的版本与类型
- 堆排序
- IE Cookie文件的结构
- 关于Eclipse中通过run on server来运行JSP文件不支持session问题
- 思考题
- Sublime Text [Decode error - output not utf-8]
- Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin
- VC资源编辑器里对话框的大小和实际的像素尺寸显示问题
- 黑马程序员-IOS学习笔记(九)分类和扩展
- 黑马程序员——Java中File类笔记,涉及递归思想、过滤器