堆堆堆,咕咕咕

1.找TopK问题

要找到最前面的k个元素

void swap(int *a,int *b)
{int temp=*a;*a=*b;*b=temp;
}
//向下调整最小堆
void minheapify(int arr[],int n,int index)
{int left=2*index+1;int right=2*index+2;int smallest=index;if(left<n&&arr[left]<arr[smallest]) smallest=left;if(right<n&&arr[right]<arr[smallest]) smallest=right;if(smallest!=index){swap(&arr[smallest],&arr[index]);minheapify(arr,n,smallest);}
}
//创建最小堆
void buildminheap(int arr[],int n)
{for(int i=(n-2)/2;i>=0;i--){minheapify(arr,n,i);}
}
//寻找顶端
void findtopk(int arr[],int n,int k)
{if(k<=0||k>n){return;}int* heap=(int*)malloc(k*sizeof(int));for(int i=0;i<k;i++){heap[i]=arr[i];}buildheap(arr,k);for(int i=k;i<n;i++){if(arr[i]>heap[0]){heap[0]=arr[i];minheapify(heap,k,0);}for(int i=0;i<k;i++){printf("%d\n",heap[i]);}free(heap);
}

时间复杂度O(n)=k+(n-k)log2 k

2.链式二叉树

typedef int BT
typedef struct BTNode
{
struct BTNode* left;//左孩子
struct BTNdde* right;//右孩子
BT val;
}BTNode;BTNode* BuyBTNode(int val)
{
BTNode* newnode=(BTNode*)malloc(sizeof(BTNode));
if(newnode==NULL)
{
perror("malloc");
return NULL;
}
newnode->val=val;
newnode->left=NULL;
newnode->right=NULL;
return newnode;
}
BTNode* CreateTree()
{
BTNode* n1=BuyBTNode(1);
BTNode* n2=BuyBTNode(2);
BTNode* n3=BuyBTNode(3);
BTNode* n4=BuyBTNode(4);
BTNode* n5=BuyBTNode(5);
BTNode* n6=BuyBTNode(6);
BTNode* n7=BuyBTNode(7);
n1->left=n2;
n1->right=n4;
n2->left=n3;
n4->left=n5;
n4->right=n6;
n5->left=n7;
return n1;
}

前序遍历:访问顺序:根结点,左子树,右子树

中序遍历:访问顺序:左子树,根结点,右子树

后序遍历:访问顺序:左子树,右子树,根结点

void PreOrder(BTNode* root)
{
if(root==NULL)
{
printf("N");
return;
}
printf("%d",root->val);
PreOrder(root->left);
PreOrder(root->right);
}void InOrder(BTNode* root)
{
if(root==NULL)
{
printf("N");
return;
}
InOrder(root->left);
printf("%d",root->val);
InOrder(root->right);
}void PostOrder(BTNode* root)
{
if(root==NULL)
{
printf("N");
return;
}
PostOrder(root->left);
PostOrder(root->right);
printf("%d",root->val);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/91915.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/91915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

n8n教程分享,从Github读取.md文档内容

从上一篇我们了解到了如何安装 n8n 那么这节课我们尝试从github的个人仓库获取某个文件的内容 目标如下 content/business/1.how-to-use-money.mdx 总流程图 流程详解 第1步&#xff1a;申请 GitHub Personal Access Token (Classic) 在gitrhub 个人 设置选项 申请 GitHub P…

分布式ID与幂等性面试题整理

分布式ID与幂等性面试题整理 文章目录分布式ID与幂等性面试题整理一、分布式ID1. 为什么需要分布式ID&#xff1f;2. 分布式ID的核心要求3. 常见分布式ID方案(1) UUID(2) 数据库自增(3) Redis自增(4) 雪花算法(Snowflake)(5) 美团Leaf/百度UidGenerator4. 雪花算法详解二、幂等…

node.js学习笔记1

目录 Node.js是什么 Node.js下载与安装 Buffer缓冲区 一些计算机硬件基础 程序运行的基本流程 Node.js是什么 node.js是一个JavaScript运行环境&#xff0c;或者说&#xff0c;node.js是一个可以运行JavaScript的软件。 可以用于开发服务端、桌面端、工具类应用。 服务器…

游戏开发日志

我来为您逐行详细讲解这个 ViewMgr.cs 文件。这是一个Unity游戏中的视野管理系统&#xff0c;用于优化游戏性能。## 文件结构概览这个文件主要包含以下几个部分&#xff1a; 1. 数据结构和接口定义 2. 视野管理器 ViewMgr 类 3. 工具类 ViewTools让我逐行为您讲解&#xff1a;#…

使用 PlanetScope 卫星图像绘制水质参数:以莫干湖为例

1.数据采集 我使用ArcGIS Pro 中的Planet Imagery插件下载了 2023 年 6 月 25 日的安卡拉莫干湖卫星图像。 图 1&#xff1a;使用 Planet 插件下载卫星图像 图 2&#xff1a;下载图像的日期和传感器选择 我查阅的研究中指出&#xff0c;使用无降水时期的卫星图像对于水质测定…

Docker部署前后端分离项目——多项目共享环境部署

目录 一、简介 二、文件目录结构 三、前端部署流程&#xff08;多nginx&#xff09; 3.1 前端打包 3.2 编写部署文件——项目1&#xff08;consult-system&#xff09; 3.3 编写部署文件——项目2&#xff08;person-system&#xff09; 3.4 前端部署至linux服务器 3.5…

学习笔记(39):结合生活案例,介绍 10 种常见模型

学习笔记(39):结合生活案例&#xff0c;介绍 10 种常见模型线性回归只是机器学习的 “冰山一角”&#xff01;根据不同的任务场景&#xff08;分类、回归、聚类等&#xff09;&#xff0c;还有许多强大的模型可以选择。下面我用最通俗易懂的语言&#xff0c;结合生活案例&#…

BabyAGI 是一个用于自构建自主代理的实验框架

这个最新的 BabyAGI 是一个用于自构建自主代理的实验框架 核心是一个新的函数框架 &#xff08;functionz&#xff09;&#xff0c;用于存储、管理和执行数据库中的函数。它提供了一个基于图形的结构&#xff0c;用于跟踪导入、依赖函数和身份验证密钥&#xff0c;并具有自动加…

商业秘密视域下计算机软件的多重保护困境

作者&#xff1a;邱戈龙、柯坚豪重庆商业秘密律师广东长昊律师事务所引言&#xff1a;计算机软件保护的复杂性 在商业秘密保护的宏大版图中&#xff0c;计算机软件因其技术密集性和创新性占据着特殊地位。软件的真正价值不仅在于其代码本身&#xff0c;更在于其背后的流程、逻…

深入理解 Spring Boot 自动配置原理

Spring Boot 之所以能“开箱即用”&#xff0c;其核心就在于 自动配置机制&#xff08;Auto Configuration&#xff09;。本文将深入剖析 Spring Boot 自动配置的工作原理&#xff0c;从注解入手&#xff0c;再到底层的源码机制&#xff0c;揭开 Spring Boot 背后的“魔法”。 …

Ubuntu18.04开机启动执行脚本

#!/bin/bash # 运行 .NET Core 应用程序 dotnet /home/bruce/atg/SmartConsole.dll &# 打开浏览器 firefox 给文件权限sudo chmod 777 start.sh运行gnome-session-properties打开系统自带的一个启动程序

c语言进阶 字符函数和字符串函数

字符函数和字符串函数字符函数和字符串函数1. strlenstrlen 函数详解模拟实现1.计数器方式2.不能创建临时变量计数器&#xff08;递归&#xff09;3.指针-指针的方式2. strcpystrcpy 函数详解模拟实现3. strcatstrcat 函数详解模拟实现4. strcmpstrcmp 函数详解模拟实现5. strn…

(LeetCode 每日一题) 1233. 删除子文件夹 (排序)

题目&#xff1a;1233. 删除子文件夹 思路&#xff1a;排序&#xff0c;时间复杂度0(L*nlogn)。 文件夹a的子文件b&#xff0c;b字符串字典序列一定是大于a的&#xff0c;所以直接将字符串数组folder升序排序。每次只需判断当前字符串&#xff0c;是否是父文件夹数组v最后一个…

集成算法学习bagging,boosting,stacking

baggibg(rf随机森林) adaboostibg 用来展示 Project Jupyter | Home 展示源码 Eclipse IDE | The Eclipse Foundation Eclipse 下载 |Eclipse 基金会 教程8-Adaboost决策边界效果_哔哩哔哩_bilibili (23 封私信) 图解机器学习神器&#xff1a;Scikit-Learn - 知乎 Baggi…

HOOPS SDK赋能PLM:打造全生命周期3D数据管理与协作能力

在制造业和工业领域&#xff0c;产品全生命周期管理&#xff08;PLM&#xff09; 已成为驱动企业数字化转型、提升创新力与运营效率的核心引擎。一个高效的PLM平台不仅需要管理海量的设计数据&#xff0c;还必须在设计、制造、供应链、销售和服务等多个环节之间无缝流转信息&am…

解决 Selenium 页面跳转过快导致的内容获取问题:从原理到实践

在使用 Selenium 进行网页自动化操作时&#xff0c;很多开发者都会遇到一个头疼的问题&#xff1a;页面还没加载完&#xff0c;代码就已经执行到下一句了。结果要么是元素找不到&#xff0c;要么是获取的内容不完整&#xff0c;甚至直接抛出异常。今天我们就来聊聊如何优雅地解…

【Python练习】051. 编写一个函数,实现简单的定时器功能

051. 编写一个函数,实现简单的定时器功能 051. 编写一个函数,实现简单的定时器功能 代码说明: 示例运行: 扩展功能 代码说明: 实现Python定时器的几种方法 051. 编写一个函数,实现简单的定时器功能 以下是一个简单的Python函数,用于实现定时器功能。这个定时器可以设置…

springboot基础-demo

1.创建学生信息表 create table stu(id int unsigned primary key auto_increment comment ID,name varchar(100) comment 姓名,age tinyint unsigned comment 年龄,gender tinyint unsigned comment 性别, 1:男, 2:女,score double(5,2) comment 成绩,phone varchar(11) comme…

关于transformer的一些疑点总结

残差连接的作用 Transformer中的残差连接&#xff08;Residual Connection&#xff09;是其深层架构能稳定训练的核心设计之一&#xff0c;主要通过以下机制发挥作用&#xff1a; 1. 缓解梯度消失&#xff0c;支持深层训练 梯度保护机制&#xff1a;在反向传播时&#xff0c;…

【终极指南】解决 Windows 11 更新后 Docker 连接 localhost 奇慢(卡顿、超时十几秒)的通用方案

聪明人能看得出这是 ai 写的&#xff0c;但也是我亲身实践的&#xff0c;最后让 ai 总结写了一篇&#xff0c;放心食用 一、 结论先行&#xff08;直接用&#xff09;问题现象&#xff1a; 升级到某个 Windows 11 版本后&#xff0c;在本地访问 Docker 容器中部署的任何服务&am…