二叉树、二叉堆
来源:互联网 发布:石青软件官网 编辑:程序博客网 时间:2024/03/28 23:14
妈呀,好久没写blog了……
来讲讲二叉堆
定义
二叉堆是一个完全二叉树,且每个根节点的权值<(可以重载)它的儿子节点
那么什么是完全二叉树呢?
看图找规律吧~
- 左边为满二叉树
- 右边为完全二叉树
- 红色部分表示被节点被删去
现在懂了吧!
实现
/*以下代码全部演示堆排序*/##include<iostream>#include<cstdio>#define maxn 100001using namespace std;int i,m,n,j,k;int a[maxn];int main(){ cin>>n; for(i=1;i<=n;i++){ scanf("%d",a+i); k=i; while(k>1 && a[k/2]>a[k]){//构造堆 int t=a[k]; a[k]=a[k/2]; a[k/2]=t; k/=2; } } int siz=n;//堆的大小 for(i=1;i<n;i++){ printf("%d ",a[1]); a[1]=a[siz--];//删除根节点 k=1; while((k*2<=siz && a[k]>a[k*2]) || (k*2+1<=siz && a[k]>a[k*2+1])){ m=k*2; if(m+1<=siz && a[m]>a[m+1])m++; int t=a[m]; a[m]=a[k]; a[k]=t; k=m; } } cout<<a[1]; return 0;}
悄悄话:其实pb_ds和STL都自带堆,而且pb_ds的堆超级快!
阅读全文
1 0
- 二叉树、二叉堆
- 二叉树 最小堆
- 二叉树堆排序
- 二叉树 - 最大堆
- 堆二叉树
- 二叉树--堆
- 二叉搜索树,堆
- 二叉树与堆
- 二叉树+二叉树搜索树+堆
- 二叉堆
- 二叉堆
- 二叉堆
- 二叉堆
- 二叉堆
- 二叉堆
- 二叉堆
- 二叉堆
- 二叉堆
- CSU1949: 小明的烦恼 【pb_ds】
- Unity 修改默认创建 C# Script 脚本格式
- hibernate-缓存算法-20
- Web性能优化之动态合并JS/CSS文件并缓存客户端
- 拦截一条有序广播
- 二叉树、二叉堆
- Android VR Player(全景视频播放器) [7]:视频列表的实现-网络视频
- leetcode 96. Unique Binary Search Trees
- c#教程与视频教程类专题资料免费下载整理合集
- 洛谷Oj-01迷宫-广度优先搜索
- Spring入门案例 IoC
- hunnu11466—找数字2
- 创建曲线偏置根据指定矢量
- 项目实训第四周(2)--问卷填写模块编码之问卷内容显示