堆的相关知识点
目录
大小堆
堆的实现
堆的创建
堆的销毁
交换
向上调整
向下调整
弹出首个元素
取出首个元素
判空
堆插入
大小堆
大堆:最上面的数字是最小的,越往下越大
小堆:最上面的数字是最大的,越往下越小
堆的复杂程度:
由错位相减我们可以知道T(n)= n - log(n-1) = n,所以建堆的复杂程度为O(N)
堆的实现
堆的创建
void HPInit(HP* php)
{assert(php);php->a = NULL;php->size = php->capacity = 0;
}
堆的销毁
void HPDestroy(HP* php)
{assert(php);free(php->a);php->a = NULL;php->size = php->capacity = 0;
}
交换
void Swap(HPDataType* p1, HPDataType* p2)
{HPDataType tmp = *p1;*p1 = *p2;*p2 = tmp;
}
向上调整
void Adjustup(HPDataType* a, int child)
{int parent = (child - 1) / 2;while (child > 0){if (a[child] < a[parent]){Swap(&a[child], &a[parent]);child = parent;int parent = (child - 1) / 2;}else{break;}}
}
向下调整
void AdjustDown(HPDataType* a, int n, int parent)
{int child = parent * 2 + 1;while (child < n){if (child + 1 < n && a[child] > a[child + 1])//先假设左孩子是小的{child++;}if (a[child] < a[parent]){Swap(&a[child], &a[parent]);parent = child;child = parent * 2 + 1;}else {break;}}
}
弹出首个元素
void HPPop(HP* php)
{assert(php);assert(php->size > 0);Swap(&php->a[0], &php->a[php->size - 1]);php->size--;AdjustDown(php->a, php->size, 0);
}
取出首个元素
HPDataType HPTop(HP* php)
{assert(php);assert(php->size);return php->a[0];
}
判空
bool HPEmpty(HP* php)
{assert(php);return php->size == 0;
}
堆插入
void HPPush(HP* php, HPDataType x)
{assert(php);if (php->size == php->capacity){int newcapacity = (php->capacity == php->size == 0 ? 4 : php->capacity * 2);HPDataType* tmp = (HPDataType*)realloc(php->a, newcapacity * sizeof(HPDataType));//扩建的是字节if (tmp == NULL){printf("malloc faild");return;}}php->a[php->size] = x;php->size++;Adjustup(php->a, php->size - 1);
}
相关文章:
堆的相关知识点
目录 大小堆 堆的实现 堆的创建 堆的销毁 交换 向上调整 向下调整 弹出首个元素 取出首个元素 判空 堆插入 大小堆 大堆:最上面的数字是最小的,越往下越大 小堆:最上面的数字是最大的,越往下越小 堆的复杂程度&#…...
【Sass】常用全局sass高级函数,可使用原子化CSS减轻代码量,方便快速开发
文章目录 前言一、安装二、样式custom.scssflex.scsscolor.scssmargin-padding.scssorther 总结 前言 提示:这里可以添加本文要记录的大概内容: 针对style的预编译器为scss 转载自git前端知识库 原博主是B站up程序员郑清,可以看他的v3教程…...
MYSQL 第四次作业
任务要求: 具体操作: 新建数据库: mysql> CREATE DATABASE mydb15_indexstu; Query OK, 1 row affected (0.01 sec) mysql> USE mydb15_indexstu; Database changed 新建表: mysql> CREATE TABLE student( ->…...
depcheck 前端依赖检查
介绍 depcheck 是一款用于检测项目中 未使用依赖项 的工具。 depcheck 通过扫描项目文件,帮助你找出未被引用的依赖,从而优化项目。 优势: 简单易用: 仅需几个简单的命令,就能够扫描并列出未使用的依赖项,让你快速了…...
Qt/C++音视频开发79-采集websocket视频流/打开ws开头的地址/音视频同步/保存到MP4文件/视频回放
一、前言 随着音视频的爆发式的增长,各种推拉流应用场景应运而生,基本上都要求各个端都能查看实时视频流,比如PC端、手机端、网页端,在网页端用websocket来接收并解码实时视频流显示,是一个非常常规的场景,单纯的http-flv模式受限于最大6个通道同时显示,一般会选择ws-f…...
网络安全等级保护制度1.0与2.0的演进与变革
等保1.0概述 等保1.0是我国在网络安全领域迈出的重要一步,它于2008年正式发布。该版本的等保制度以《信息安全技术 信息系统安全等级保护基本要求》为核心标准,主要聚焦于信息系统的物理安全、网络安全、主机安全、应用安全和数据安全等方面的基础防护。…...
多线程优化API请求:CountDownLatch与PriorityBlockingQueue的应用
目录 前言 CountDownLatch是什么? PriorityBlockingQueue是什么? 场景描述 解决方案 定义统一工厂制造类 定义制造厂 定义客户请求实现 定义控制器 定义启动类 结果呈现 启动项目 请求制造操作 总结 前言 写这篇文章的缘由是因为之前在面…...
谷粒商城实战笔记-54-商品服务-API-三级分类-拖拽效果
文章目录 一,54-商品服务-API-三级分类-修改-拖拽效果1,el-tree控件加上允许拖拽的属性2,是否允许拖拽3,完整代码 一,54-商品服务-API-三级分类-修改-拖拽效果 本节的主要内容是给三级分类树形结构加上拖拽功能&#…...
AI大模型学习必备十大网站
随着人工智能技术的快速发展,AI大模型(如GPT-3、BERT等)在自然语言处理、计算机视觉等领域取得了显著的成果。对于希望深入学习AI大模型的开发者和研究者来说,找到合适的学习资源至关重要。本文将为大家推荐十大必备网站ÿ…...
Elasticsearch:Golang ECS 日志记录 - zap
ECS 记录器是你最喜欢的日志库的格式化程序/编码器插件。它们可让你轻松地将日志格式化为与 ECS 兼容的 JSON。 编码器以 JSON 格式记录日志,并在可能的情况下依赖默认的 zapcore/json_encoder。它还处理 ECS 错误格式的错误字段记录。 默认情况下,会添…...
关于线性代数(考研)
1.AE的特征值的问题 若λ是A的特征值,对应的特征向量是x,则Axλx,所以(AE)xAxExλxx(λ1)x,所以λ1是AE的特征值。所以若A的特征值是1,1,0,则AE的特征值就是11,11,01&am…...
【java基础】spring springMVC springboot 的区别
Spring, Spring MVC, 和 Spring Boot 是三个紧密相关的技术,它们都是由 Pivotal 团队(原SpringSource)开发的,主要用于构建企业级的Java应用程序。尽管它们在功能上有所交集,但各自也有独特的定位和用途。 Spring Fra…...
【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 开源项目热度排行榜(100分) - 三语言AC题解(Python/Java/Cpp)
🍭 大家好这里是清隆Coding ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线评测,专栏文章质量平均 93 分 最新华为OD机试目录…...
大模型算法面试题(十一)
本系列收纳各种大模型面试题及答案。 1、说一下目前主流或前沿的预训练模型,包括nlp(百度ERNIE3.0,华为NEZHA,openAI gpt-3,nvidia MegatronLM,macrosoft T5)和cv(我只知道CLIP&…...
CSS 基础知识
CSS(级联样式表)是设置 Web 内容样式的代码。CSS 基础知识将介绍入门所需的内容。我们将回答以下问题:如何将文本设置为红色?如何使内容显示在(网页)布局中的某个位置?如何用背景图片和颜色装饰我的网页? 什么是CSS? 像HTML一样,CSS不是一种编程语言。它也不是一种标…...
IntelliJ IDEA 和 Eclipse的区别
IntelliJ IDEA 和 Eclipse 是两个非常流行的 Java 集成开发环境(IDE),它们各自具有不同的特点和优势。下面是它们之间的一些主要对比: 性能和资源使用 IntelliJ IDEA 被认为在某些方面更加智能,能够提供更好的代码分…...
Ansible之playbook剧本编写(二)
tags 模块 可以在一个playbook中为某个或某些任务定义“标签”,在执行此playbook时通过ansible-playbook命令使用--tags选项能实现仅运行指定的tasks。 playbook还提供了一个特殊的tags为always。作用就是当使用always作为tags的task时,无论执行哪一个t…...
力扣第二十九题——两数相除
内容介绍 给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345 将被截断为 8 ,-…...
解析三款热门的文献翻译工具:优势与使用指南
今儿咱们来聊聊那些让咱们头疼又不得不面对的事儿——文献翻译。在浩瀚的学术海洋里遨游时,遇到外文文献那是家常便饭,但语言障碍就像海上的迷雾,一不小心就能让你偏离航向。别担心,我这不就带着几款亲测好用的文献翻译神器来了嘛…...
git 过滤LFS文件下载
git config --global filter.lfs.smudge "git-lfs smudge --skip -- %f" git config --global filter.lfs.process "git-lfs filter-process --skip" 恢复下载 git config --global filter.lfs.smudge "git-lfs smudge -- %f" git config --g…...
OpenClaw成本优化方案:ollama GLM-4-7-Flash替代OpenAI API实测
OpenClaw成本优化方案:ollama GLM-4-7-Flash替代OpenAI API实测 1. 为什么需要寻找OpenAI API的替代方案 去年我开始在个人项目中使用OpenClaw实现自动化办公流程时,很快被OpenAI API的token消耗速度震惊了。一个简单的"读取邮件附件-解析内容-生…...
5分钟搭建专业级缠论可视化分析平台:从零到实战的完整指南
5分钟搭建专业级缠论可视化分析平台:从零到实战的完整指南 【免费下载链接】chanvis 基于TradingView本地SDK的可视化前后端代码,适用于缠论量化研究,和其他的基于几何交易的量化研究。 缠论量化 摩尔缠论 缠论可视化 TradingView TV-SDK 项…...
新手友好:通过快马用自然语言生成你的第一个openclaw卸载脚本
作为一个刚接触编程的新手,想要自己动手写一个软件卸载脚本确实会有点无从下手。最近我在学习Python时,发现用InsCode(快马)平台可以很轻松地通过自然语言描述生成完整代码,特别适合我们这样的初学者。下面我就分享一下如何用这个平台快速创建…...
电商数据采集API接口||合规优先、稳定高效、数据精准
一、API 类型选型(先选对,再做对)优先按 “官方 → 第三方聚合 → 自建” 顺序选择,平衡合规、成本与效率:表格API 类型代表平台核心优势适用场景注意事项官方开放 API淘宝 TOP、京东万象、拼多多开放平台、亚马逊 SP-…...
7天打造智能助理:OpenClaw+Qwen3-VL:30B飞书开发周计划
7天打造智能助理:OpenClawQwen3-VL:30B飞书开发周计划 1. 为什么选择这个组合? 去年冬天,我偶然在GitHub上发现了OpenClaw这个项目。当时我正在为团队寻找一个既能处理日常办公自动化,又能理解图片内容的智能助手方案。传统的RP…...
vLLM-v0.17.1实战案例:HuggingFace模型无缝接入+多LoRA高效推理
vLLM-v0.17.1实战案例:HuggingFace模型无缝接入多LoRA高效推理 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库,由加州大学伯克利分校的天空计算实验室(Sky Computing Lab)开发,现已发展为社区驱动的开源项目。…...
OpenClaw故障自愈方案:Qwen3-32B镜像异常重启监控
OpenClaw故障自愈方案:Qwen3-32B镜像异常重启监控 1. 问题背景与解决思路 上周我的OpenClaw自动化助手突然"罢工"了——原本应该定时执行的日报生成任务没有按时完成。排查后发现是底层Qwen3-32B模型服务因OOM异常退出。这种情况在长期运行的AI服务中并…...
【亲测】OpenClaw怎么部署?2026年OpenClaw华为云8分钟搭建喂奶级教程
【亲测】OpenClaw怎么部署?2026年OpenClaw华为云8分钟搭建喂奶级教程。OpenClaw能做什么?OpenClaw怎么部署?本文面向零基础用户,完整说明在轻量服务器与本地Windows11、macOS、Linux系统中部署OpenClaw(Clawdbot&#…...
前端未来趋势:别再用老掉牙的技术了
前端未来趋势:别再用老掉牙的技术了 各位前端同行,咱们今天聊聊前端未来趋势。别告诉我你还在使用老掉牙的技术,那感觉就像在使用诺基亚手机。 为什么你需要关注前端未来趋势 最近看到一个项目,还在使用 jQuery,我差点…...
Synchronized 与 ReentrantLock 深度对比
前言 在Java并发编程中,锁机制是保证线程安全的核心手段。synchronized 和 ReentrantLock 是两种最常用的锁实现,面试中经常被要求对比它们的区别。 本文将深入分析两者的底层原理、功能特性、性能差异以及各自的适用场景。 一、快速概览 维度synchro…...
