堆排序
来源:互联网 发布:大数据课程培训 编辑:程序博客网 时间:2024/06/13 00:03
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>using namespace std;int a[101100];void HeapAdjust(int i,int size){ int l=2*i; int r=2*i+1; int max=i; if(i<=size/2) { if(l<=size&&a[l]>a[max]) max=l; if(r<=size&&a[r]>a[max]) max=r; if(i!=max) { swap(a[i],a[max]); HeapAdjust(max,size); } }}void BuildHeap(int size){ int i; for(i=size/2;i>=1;i--)//非叶子节点最大值为size/2 { HeapAdjust(i,size);//该函数将数组调整为最大堆 }}void HeapSort(int size){ int i; BuildHeap(size); for(i=size;i>=1;i--) { swap(a[1],a[i]);//交换堆顶和最后一个元素,最大元素放到最后 HeapAdjust(1,i-1); }}int main(){ int n,m; while(~scanf("%d",&n)) { int i; for(i=1;i<=n;i++) { scanf("%d",&a[i]); } HeapSort(n); for(i=1;i<=n;i++) { if(i==n) printf("%d\n",a[i]); else printf("%d ",a[i]); } } return 0;}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- 异步化方案
- 深入理解init_2-----解析配置文件init.rc(基于Android 2.2,代码源于Google)
- Android Studio Session 'MainActivity': Error Launching activity
- Nodejs搭建基本的http服务
- gulp构建web项目
- 堆排序
- 欢迎使用CSDN-markdown编辑器
- float保留两位小数
- eclipse中查看jdk源码
- C/C++ 打印文件名、行号、函数名的方法
- 【博弈】移棋子游戏(BSOI3969)
- 设计模式之单例模式
- 有关单链表的面试题分析及代码实现
- C++ _deslspec的使用