堆排序
来源:互联网 发布:json格式转换工具类 编辑:程序博客网 时间:2024/06/16 20:24
代码如下:
#include <iostream>#include <cstdio>#define LEFT(i) i<<1using namespace std;const int INF=1e5;int num[INF];void MaxHeapify(int id,int n) //调整大顶堆 O(lgn){ while(id<=n/2) { int temp=LEFT(id); //左孩子节点 if(temp>n) break; if(temp+1<=n && num[temp]<num[temp+1]) //找出左右孩子中较大的节点的编号 temp++; if(num[id]>num[temp]) break; swap(num[id],num[temp]); id=temp; }}void BuildMaxHeap(int n) //建堆 O(n){ for(int i=n/2;i>0;i--) MaxHeapify(i,n);}void HeapSort(int n) //堆排序 O(nlgn){ BuildMaxHeap(n); int cnt(n); while(cnt>1) { swap(num[cnt],num[1]); cnt--; MaxHeapify(1,cnt); }}int main(){ int n; while(cin>>n) { for(int i=1;i<=n;i++) cin>>num[i]; HeapSort(n); for(int i=1;i<=n;i++) cout<<num[i]<<" "; cout<<endl; } return 0;}
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- sql中的join
- 写文档的经验教训
- c# 读取opencv 生成的svm训练好的xml分类器
- memset简单实现
- 移动物联智慧科技:移动应用案例
- 堆排序
- 自己可能用到的笔试面试题(整理C/C++)
- 使用chmod同时给目录、文件夹赋予不同的权限
- 微信公众账号运营培训内部教程
- PLSQL常用语句汇总
- 直接拿来用!最火的iOS开源项目(二)
- 变量及内存分配
- strcat实现
- YII Framework学习教程-用YIIC快速创建YII应用之三