堆排序
来源:互联网 发布:杜克大学商学院知乎 编辑:程序博客网 时间:2024/06/05 09:39
#include<iostream>using namespace std;int a[20];void tiaozheng(int n,int m)//n为待调整的数组长度;m为从哪个结点开始; {int i=m;int j=2*i;while(j<=n){if(j+1<=n&&(a[j+1]>a[j])){j++;}if(a[i]<a[j]){int t=a[i];a[i]=a[j];a[j]=t;}i=2*i;j=2*i; }}void creat(int n)//注意在初始化一个大根堆时开始的结点为最后一个非叶子结点,即对应数组下标为n/2; { for(int i=n/2;i>=1;i--) { tiaozheng(n,i); }} int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}creat(n);//初始化一个大根堆; //cout<<a[1]<<endl;int t=a[1];a[1]=a[n];a[n]=t;for(int i=1;i<n;i++)//不停的建立大根堆{int t=n-i;tiaozheng(t,1);//cout<<a[1]<<endl;int m;m=a[1];a[1]=a[t];a[t]=m;}for(int i=1;i<=n;i++)//大根堆实现把最大的数放在整个数组的最后,故通过大根堆建立的数组最终实现的是升序排列 {cout<<a[i]<<endl; } return 0;}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- 栈
- request对象
- 对傅立叶变换后图像空间域与频率域中垂直现象的研究
- 求对角线上的和
- Cannot change version of project facet Dynamic web module to 2.5
- 堆排序
- 懒人搭建OpenGrok for Android N on Ubuntu 16.04
- 解决maven jar包 miss 更新无效的问题。
- 品牌商代理商经销商
- Uva1339古老的密码
- 数据挖掘中针对缺失值的处理
- 大牛们是怎么阅读 Android 系统源码的?
- 自定义圆角输入框样式
- Java的IO之字节流(stream)