博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
堆的建立、调整、删除、插入
阅读量:5348 次
发布时间:2019-06-15

本文共 1141 字,大约阅读时间需要 3 分钟。

模板:

#include 
#include
#define LEN 10000using namespace std;int heap[LEN]; //本例为小根堆 int n=0;void downAdjust(int a,int b){ //[a,b]为欲调整的区间 int i=a; //父节点 int j=i*2; //左叶子节点 while(i<=b){ if(j+1<=n && heap[j+1]
=1;i--){
//n/2 是最后一个节点的父节点。从最后一层开始调整 downAdjust(i,n); }}void pop(){ heap[1]=heap[n--]; downAdjust(1,n);}void upAdjust(int a,int b){ int i=b,j=i/2; while(j>=a){ if(heap[j]>heap[i]){ swap(heap[j],heap[i]); i=j; j=i/2; }else break; }}void push(int elem){ heap[++n]=elem; upAdjust(1,n);}void display(){ for(int i=1;i<=n;i++){ printf("%d ",heap[i]); } puts("");}int main(){ freopen("heap.txt","r",stdin); int num; while(~scanf("%d",&num)){ heap[++n]=num; } build(); //push演示 puts("push演示"); push(-1); display(); //堆排序演示 puts("堆排序演示"); while(n>0){ printf("%d\n",heap[1]); display(); puts(""); pop(); } return 0;}

测试效果:

 

转载于:https://www.cnblogs.com/TQCAI/p/8535824.html

你可能感兴趣的文章
css3渐变画斜线 demo
查看>>
JS性能DOM优化
查看>>
HAL层三类函数及其作用
查看>>
Odoo 去掉 恼人的 "上午"和"下午"
查看>>
web@h,c小总结
查看>>
java编程思想笔记(一)——面向对象导论
查看>>
Data Structure 基本概念
查看>>
Ubuntu改坏sudoers后无法使用sudo的解决办法
查看>>
NEYC 2017 游记
查看>>
[搬运] 写给 C# 开发人员的函数式编程
查看>>
Python之旅Day14 JQuery部分
查看>>
core--线程池
查看>>
redux-effect
查看>>
Android轻量级的开源缓存框架ASimpleCache
查看>>
他山之石:加载图片的一个小问题
查看>>
shell - 常识
查看>>
mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
查看>>
分层图最短路【bzoj2763】: [JLOI2011]飞行路线
查看>>
linux下编译复数类型引发的错误:expected unqualified-id before '(' token
查看>>
codeforces 1041A Heist
查看>>