创建最大堆,对指定位置元素进行删减

2023-11-16

在堆H上实现一种新的操作:DecreaseKey(H,P,X), 将堆H中,位于P的元素的值减去X。这个操作如何实现?当然,要求操作执行后,H仍然是个堆,堆中的元素允许移动。



#include <stdio.h>

#include <malloc.h>

typedef struct maxhead1 *maxhead;
struct maxhead1
{
int *a; //to save the number
int size; //the current number of elements
int MAX; //the maximum number of elements
};

//Create a maximum tree
maxhead Create(int n)

{
maxhead H=malloc(sizeof(struct maxhead1));
H->a=malloc((n+1) * sizeof(struct maxhead1));
H->size=1;
H->MAX=n;
H->a[0]=10000;

return H;
}

void Insert(maxhead s,int n)
{
s->a[s->size]=n;
int child=s->size;
int parent;
for(;;child/=2)
{
parent=child/2;
if(s->a[child] < s->a[parent])
break;
else
{
s->a[child]=s->a[parent];
s->a[parent]=n;
}
}
}
//input the number
void input(maxhead s)
{
int k;
printf("please input the number:\n");
while(s->size <= s->MAX)
{
scanf("%d",&k);
Insert(s,k);
s->size++;
}
}

//change the node and create a new heap
void dcreaseKey(maxhead s,int p,int x)
{
int item=s->a[p]-x;
int parent;
int child;
for(parent = p;parent*2 <= s->size;parent=child)
{
child=parent*2;
if((child != s->size) &&
(s->a[child]<s->a[child+1]))
child++;

if(item >s->a[child])
break;
else
s->a[parent]=s->a[child];
}
s->a[parent]=item;
}

void printheap(maxhead s)
{
int i=1;
while( i <= (s->size-1) )
{
if( i != (s->size-1))
printf("%d ",s->a[i]);
else
printf("%d\n",s->a[i]);
i++;

}
}


int main()
{
setvbuf(stdout,NULL,_IONBF,0);
int n;

printf("please input how many data you want to have:\n");
scanf("%d",&n);

maxhead s=Create(n);
input(s);

printf("initial data:\n");
printheap(s);

int p,x;
printf("please input the site and the number you want to minus:\n");
scanf("%d %d",&p,&x);
dcreaseKey(s,p,x);

printf("processed data:\n");
printheap(s);
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建最大堆,对指定位置元素进行删减 的相关文章

  • 使用hutool读取excel多sheet文件

    首先要使用hutool 可以加载maven
  • 华为手机一直android,华为手机内存不够用?这5个文件夹常清理,可以腾出近10个G内存...

    华为手机的用户量在急剧增加 当然 随时而来的就是许多使用问题 用户反馈最多的就是手机运行问题 手机使用时间一长 就会卡顿 尤其是处理紧急问题时遇到手机怠工 真是没救了 手机卡顿很大程度上是内存问题 平时使用不当造成手机内垃圾信息过多 占用手
  • R语言 第四章 初级绘图(5)课后练习,保存图形,layout函数,绘制组合图形,添加图例

    关注公众号凡花花的小窝 收获更多的考研计算机专业编程相关的资料 添加图例 当图形中包含的数据不止一组时 图例可以帮助你辨别出每个条形 扇形区域或折线各代表哪一类数据 此时 可以使用legend函数来在画布中添加图例 对图形进行相应说明 le
  • nginx root 和alise

    Nginx静态服务配置 详解root和alias指令 简书 jianshu com 静态文件 Nginx以其高性能著称 常用与做前端反向代理服务器 同时nginx也是一个高性能的静态文件服务器 通常都会把应用的静态文件使用nginx处理 配
  • Android下NestedScrolling机制与CoordinatorLayout之源码分析

    1 CoordinatorLayout依赖库 旧版本导入CoordinatorLayout依赖 implementation com android support design 28 0 0 升级Android X后的依赖 impleme
  • STUN和TURN技术浅析

    原文地址 http www h3c com cn MiniSite Technology Circle Net Reptile The Five Home Catalog 201206 747038 97665 0 htm 在现实Inter
  • pytorch中attention的两种实现方式

    class AttnDecoderRNN nn Module def init self hidden size output size dropout p 0 1 max length MAX LENGTH super AttnDecod
  • XMind2TestCase思维导图测试用例转Excel使用方法

    很多测试工程师习惯于用思维导图写测试用例 结构会比较清晰 但是我们通常把思维导图的用例整理至excel或者导入其他工具如禅道 testlink tapd来执行用例或存档 如果再逐条把思维导图转为excel会比较浪费时间 有没有工具可以把思维
  • 数字高程信息30m分辨率SRTM DEM数据下载与拼接(ENVI)

    数据下载 本次下载的数据是SRTMDEM数据 该数据分辨率为30m 可以到官网下载官网地址 http gdex cr usgs gov gdex 官网数据下载需要注册信息 如果部分区域可从网盘下载 网盘地址 链接 https pan bai
  • LeetCode第26题,删除排序数组中的重复项

    LeetCode 高频题 数组篇 26 删除排序数组中的重复项 大家好 我是Panda 今天分享的是LeetCode第26题 删除排序数组中的重复项 力扣题目链接 LeetCode 26 题目描述 给你一个 升序排列 的数组 nums 请你
  • layui后台表格的增删改查

    完整案例 github自己下下来 就是个很一般的ssm项目 但基本功能都有 已部署到云平台 后台管理员地址 暑假时候没做完凑合看吧 账号 17679210786 密码 123456 前后台都是 前台可以自己用手机号注册 别删除原来的内容 先
  • 攻防世界-MISC-练习区-12(功夫再高也怕菜刀)

    题目描述 菜狗决定用菜刀和菜鸡决一死战 这是攻防世界里面训练区的一道流量分析题 用wireshark 打开流量包 然后一级搜索http 二级用分组字节流搜索flag 按CTRL F 并找到no 1367 在Line based text d
  • 移动NB模块M5311(lwm2m协议登录详解)

    身为一个通信专业大三狗 第一次和别人对接项目今天属于我的功能总算是结束了 接下来就是等待联调 心情愉悦 首先NB是什么 这个我就不详细的解释了 我相信大多数人看这篇文章是以实践为开始的 那么多余的就不说了 接下来说具体流程 首先M5311模
  • 确实有必要好好学英语

    前言 工作已经6年多了 最近忽然明悟一些道理 零度觉得分享出来可能可以帮助一些人 这些道理可能很多成功的 牛逼的人早就知道这些了 随着技术的迭代更新越来越快 新技术不断产生 很多很多人都在焦虑 但是有一个道理的确是这样的 你不学习 未来终将
  • 【微信小程序】项目开发-----百度翻译API接口开发微信翻译小程序

    开发环境 微信开发者工具 V1 02 1902010版本以上 开发语言 JavaSript语言 HTML语言 API接口 百度翻译开发平台开放接口 界面预览 开发 基础配置 1 app js App onLaunch function 展示
  • AVPlay播放视频

    property nonatomic retain nullable AVPlayer player NSString urlStr NSBundle mainBundle pathForResource demo mp4 ofType n
  • 将灰度图片转成三通道(RGB)图片(MatLab)

    运行程序报错 RuntimeError output with shape 1 224 224 doesn t match the broadcast shape 3 224 224 报错原因 原模型输入的图片为RGB三通道 我输入的为单通
  • pytorch混合常量、变量

    有矩阵 X R n d X in R n times d
  • 蓝桥杯2015年第六届真题-赢球票

    题目 题目链接 题解 暴力 模拟 枚举每次从哪个位置开始 也就是有n种情况要枚举 对于每一种情况 我们都模拟这个过程 更新最大值 取牌操作结束的条件是还未被取走的数中的最大值都小于报的数了 说明没有办法取走任何一张了 此时结束 注意答案要求

随机推荐

  • docker安装rabbitmq

    1 准备 需要安装好docker环境 可以阅读文章在Centos和Redhat上安装Docker 小帅虎丶丿的博客 CSDN博客 学习如何安装docker 需要安装docker compose 了解yaml格式文件的编写以及一些常用的doc
  • 【python】如何使python中线程等待其他线程完了再执行;python-threading中的join方法;python的thread库如何判断子线程所绑定的函数全部执行完毕?

    1 主要方法 让所有的子线程都join 就可以了 不用join 的时候是这样的 用了join 之后是这样的 2 案例一 1 没有join import threading time def fun print 线程开始 print 我是线程
  • 国内几个主要的ubuntu 18.04 软件源

    1 阿里源 deb http mirrors aliyun com ubuntu bionic main restricted universe multiverse deb http mirrors aliyun com ubuntu b
  • R如何正确动态创建变量名,解决target of assignment expands to non-language object

    在一个群里 看到一位朋友发了一堆代码 错误代码 以及一个报错信息 Error in paste could not find function paste 还有一个target of assignment expands to non la
  • C++ 文档加密与解密运用【Crypto++】库

    一 下载Cryptopp 鼠标放到下面网址 点击下载即可 github地址 8 7 0版本 https github com weidai11 cryptopp releases tag CRYPTOPP 8 7 0 二 下载PEM包 pe
  • [1100]rocketmq详解

    文章目录 rocketmq入门 消息队列 rocketmq示例图 rocketmq应用场景 搭建环境 环境安装 Linux RocketMQ下载及安装 RocketMQ目录结构 RocketMQ启动及测试 管理工具 mqadmin管理工具
  • Navicat系列软件在win10中崩溃/闪退解决办法

    Navicat系列软件在win10中崩溃 在执行query gt run selected 的时候crash 安装了navicat 11的版本 经常在下拉菜单执行的过程中碰到闪退的情况 找过很多版本的安装包 都是如此 操作系统 win10
  • 程序员的关键思维

    在IT行业工作多年 越往后走 越是感觉到需要强调思考的能力 思考是我们底层非常关键的能力 尤其是在脑力密集 知识密集的行业里面显得更加重要 而这些思考的能力到底指的是什么 有没有什么方法论可以作为指导 让我们在日常的工作中不断精进 我最近试
  • [转]如何删除grub恢复windows操作系统的启动

    注 本文特别适合于在windows下已释放Linux所占空间 而启动时仍进入grub引导而不知如何解决的朋友 此文是我自己遇到这个问题时在网上搜到的 在此转载供大家参考 我自己采用的是方法四 确实比较简便 由于windows 2000 wi
  • 移植2- 移植uboot的spl代码

    根据http blog csdn net xiaojiaohuazi article details 8269890来修改 2014 3 2 做到第九步 这步还未做 疑问 uboot应该在BL2时才初始化内存吧 这里为什么这么早就初始化内存
  • 多线程高并发服务器:3个问题

    1 子线程能否关闭监听文件描述符 2 主线程能否关闭通信文件描述符 3 多个子线程共享cfd 会有什么问题发生 解答1 不能 父子线程共享文件描述符 若子进程关闭监听文件描述符之后 第二个子线程Accept时就会出错 Accept的第一个参
  • V-rep学习笔记:Geometric Constraint Solver(几何约束求解)

    The geometric constraint solver is slower and less precise at solving kinematic problems but might be easier and more in
  • 【计算机视觉】LeNet方法实现手写体识别(MNIST数据集)

    目录 一 MNIST数据集的特点 二 LeNet模型原理 一 卷积神经网络 二 LeNet 5模型 三 实验结果 一 训练测试结果 二 匹配结果 四 相关代码 一 MNIST数据集的特点 部分数据 MNIST数据集是一个手写体数据集 数据集
  • 进程间通信(IPC)的方法:命名管道

    使用管道时 一个进程的输出可成为另外一个进程的输入 命名管道 Named pipe或FIFO 是一种类似于管道的特殊文件 但在文件系统上有一个名称 它允许以先进先出 FIFO first in first out 的方式存储有限数量的数据
  • CUDA常见函数(一)(小白入门)

    CUDA常见函数 小白入门 示例代码0 VS自带Kernel cu 初始定义 核函数 其他函数 示例代码1 传递参数 cudaMalloc malloc cudaFree cudaMemcpy Memcpy 示例代码2 查询设备 cudaG
  • 关于as遇到的Enable "Android Support" Plugin错误问题

    元旦休息了3天 17年第一天上班打开as就遇到了这个facets cannot be loaded you can mark them as ignored to suppress this error错误问题 蛋疼得很 当然既然遇到了 就
  • 树莓派Pico入手

    树莓派Pico入手 树莓派 Pico 中文站 一 介绍 1 1 价格 开发板 19 00 1 2 型号 目前主要有两个型号 Pico 基础版 Pico W 板载WIFI芯片 H的是指给你焊好排针 1 3 性能 核心 双核 Arm Corte
  • Fisco技术文档总结1---搭建第一个区块链网络

    前言 本文的记录与总结依照于FISCO BCOS 技术文档学习联盟链搭建的相关知识 详细搭建过程见文档 本文仅作参考 本文通过在单机上部署一条4节点的FISCO BCOS联盟链 掌握FISCO BCOS部署流程 搭建 需要使用已经封装好的脚
  • 简易数字式电阻、电容和电感测量仪设计报告

    写在前面 这是这次参加电子设计大赛我写的设计报告 但是我本人现在对硬件不是很熟悉 所以很对原理叙述不是很到位啊 不过整个作品用到知识点和原理都基本说清楚了 简易数字式电阻 电容和电感测量仪设计报告 摘要 本系统利用TI公司的16位超低功耗单
  • 创建最大堆,对指定位置元素进行删减

    在堆H上实现一种新的操作 DecreaseKey H P X 将堆H中 位于P的元素的值减去X 这个操作如何实现 当然 要求操作执行后 H仍然是个堆 堆中的元素允许移动 include