二叉堆(插入,删除)
来源:互联网 发布:c语言产生随机数 编辑:程序博客网 时间:2024/06/05 20:55
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;int heap[100000],len;void up(){int k=len;while(k>1){if(heap[k]<heap[k>>1])swap(heap[k],heap[k>>1]);k>>=1;}}void down(int n){while(n<<1<=len){if(heap[n<<1]<heap[n<<1|1]){if(heap[n<<1]<heap[n])swap(heap[n<<1],heap[n]);}else if(heap[n<<1|1]<heap[n<<1]){if(heap[n<<1|1]<heap[n])swap(heap[n<<1|1],heap[n]);}}}void pop(int n){heap[1]=heap[len];len--;down(1);}void push(int n){heap[++len]=n;up();}int main(){int i,j,k,m,n,x;scanf("%d",&n);while(n--){scanf("%d",&x);push(x);}for(i=1;i<=len;i++)printf("%d ",heap[i]);return 0;}
显然,堆是一种高效的数据结构
0 0
- 二叉堆(插入,删除)
- 二叉堆 删除 插入 调整 堆排序
- 二叉堆的插入删除等操作C++实现
- 堆与堆排序、二叉堆定义、对的插入与删除
- 堆与堆排序、二叉堆定义、对的插入与删除
- 堆插入、删除、排序
- java实现堆的操作(建堆,插入,删除)
- 二叉堆的插入例程
- 堆的插入 删除 排序
- 堆排序/插入/删除 整理
- 堆的创建、插入、删除
- 堆的创建,插入,删除
- 堆的创建,插入,删除
- 优先队列(二叉堆)的插入程序
- 如何创建最小(大)堆(插入、删除)
- 堆排序,插入,删除,调整算法(大顶堆)
- 堆排序,插入,删除,调整算法(大顶堆)
- 堆的动态操作(插入、删除、调整)
- noip普及组复赛解题报告c++和Pascal
- rails 添加删除表 字段
- hdu5072 Coprime
- C++的四种强制类型转换
- Hibernate+javabean+mysql的简单案例
- 二叉堆(插入,删除)
- 韦根协议
- kali linux安装burpsuite_pro_v1.7.11
- linux 安装tomcat
- Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method:
- Node.js 里用 D3.js 来作图
- 各个发展方向程序员的书籍
- 日常错误笔记(PHP)
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?