先成长性
来源:互联网 发布:windows app store 编辑:程序博客网 时间:2024/05/17 01:47
#include <iostream>#include<algorithm>using namespace std;void HeapAdjust(int *a,int i,int size) //调整堆 { int lchild=2*i; //i的左孩子节点序号 int rchild=2*i+1; //i的右孩子节点序号 int max=i; //临时变量 if(i<=size/2) //如果i是叶节点就不用进行调整 { if(lchild<=size&&a[lchild]>a[max]) { max=lchild; } if(rchild<=size&&a[rchild]>a[max]) { max=rchild; } if(max!=i) { swap(a[i],a[max]); HeapAdjust(a,max,size); //避免调整之后以max为父节点的子树不是堆 } } }void BuildHeap(int *a,int size) //建立堆 { int i; for(i=size/2;i>=1;i--) //非叶节点最大序号值为size/2 { HeapAdjust(a,i,size); } } void HeapSort(int *a,int size) //堆排序 { int i; BuildHeap(a,size); for(i=size;i>=1;i--) { //cout<<a[1]<<" "; swap(a[1],a[i]); //交换堆顶和最后一个元素,即每次将剩余元素中的最大者放到最后面 //BuildHeap(a,i-1); //将余下元素重新建立为大顶堆 HeapAdjust(a,1,i-1); //重新调整堆顶节点成为大顶堆 }} int main(int argc, char *argv[]){ //int a[]={0,16,20,3,11,17,8}; int a[100]; int size; while(scanf("%d",&size)==1&&size>0) { int i; for(i=1;i<=size;i++) cin>>a[i]; HeapSort(a,size); for(i=1;i<=size;i++) cout<<a[i]<<""; cout<<endl; } return 0;}
0 0
- 先成长性
- 信赖性成长曲线
- 悲惨性的成长
- 成长
- 成长
- 成长
- 成长
- 成长
- 成长
- 成长
- 成长
- 成长^^^
- 成长
- 成长
- 成长
- 成长
- 成长?????
- 成长
- WMS仓库管理系统---(8)采购管理模块--采购单审核
- Android导入Eclispe项目
- 利用Jquery ajaxfileupload插件+PHP 进行文件的上传
- SDUTOJ 2825 小P寻宝记——粗心的基友 01背包
- Android内存管理
- 先成长性
- [备忘]CDH5.3 Hive FAILED: RuntimeException Cannot create staging directory 报错原因
- 慢牛股票-基于Sencha touch+Cordova的股票类APP
- 大端小端
- 网卡驱动---网卡及网络知识 储备
- 多维动态数组定义及应用
- Apache配置301跳转和开启.htaccess的方法
- Binary Tree Postorder Traversal
- HTML5 Access-Control-Allow-Origin解决跨域问题